|
@@ -1,341 +1,175 @@
|
|
|
<!DOCTYPE html>
|
|
<!DOCTYPE html>
|
|
|
-<html>
|
|
|
|
|
-
|
|
|
|
|
- <head>
|
|
|
|
|
- <meta charset='utf-8' />
|
|
|
|
|
- <meta http-equiv="X-UA-Compatible" content="chrome=1" />
|
|
|
|
|
- <meta name="description" content="php-phantomjs : Execute PhantomJS commands through PHP" />
|
|
|
|
|
|
|
|
|
|
|
|
+<html>
|
|
|
|
|
+<head>
|
|
|
|
|
+ <meta charset='utf-8'>
|
|
|
|
|
+ <meta http-equiv="X-UA-Compatible" content="chrome=1">
|
|
|
|
|
+ <meta name="description" content="php-phantomjs : Execute PhantomJS commands through PHP">
|
|
|
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
|
|
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
|
|
|
|
|
|
|
|
- <title>php-phantomjs</title>
|
|
|
|
|
- </head>
|
|
|
|
|
-
|
|
|
|
|
- <body>
|
|
|
|
|
|
|
+ <title>PHP PhantomJS</title>
|
|
|
|
|
+</head>
|
|
|
|
|
|
|
|
|
|
+<body>
|
|
|
<!-- HEADER -->
|
|
<!-- HEADER -->
|
|
|
|
|
+
|
|
|
<div id="header_wrap" class="outer">
|
|
<div id="header_wrap" class="outer">
|
|
|
<header class="inner">
|
|
<header class="inner">
|
|
|
- <a id="forkme_banner" href="https://github.com/jonnnnyw/php-phantomjs">View on GitHub</a>
|
|
|
|
|
-
|
|
|
|
|
- <h1 id="project_title">php-phantomjs</h1>
|
|
|
|
|
- <h2 id="project_tagline">Execute PhantomJS commands through PHP</h2>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <a id="forkme_banner" href="https://github.com/jonnnnyw/php-phantomjs">View on GitHub</a>
|
|
|
|
|
|
|
|
- <section id="downloads">
|
|
|
|
|
- <a class="zip_download_link" href="https://github.com/jonnnnyw/php-phantomjs/zipball/master">Download this project as a .zip file</a>
|
|
|
|
|
- <a class="tar_download_link" href="https://github.com/jonnnnyw/php-phantomjs/tarball/master">Download this project as a tar.gz file</a>
|
|
|
|
|
- </section>
|
|
|
|
|
|
|
+ <h1 id="project_title">PHP PhantomJS</h1>
|
|
|
|
|
+ <h2 id="project_tagline">Execute PhantomJS commands through PHP</h2>
|
|
|
|
|
+
|
|
|
</header>
|
|
</header>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div><!-- MAIN CONTENT -->
|
|
|
|
|
|
|
|
- <!-- MAIN CONTENT -->
|
|
|
|
|
<div id="main_content_wrap" class="outer">
|
|
<div id="main_content_wrap" class="outer">
|
|
|
- <section id="main_content" class="inner">
|
|
|
|
|
- <h1>
|
|
|
|
|
-<a name="usage" class="anchor" href="#usage"><span class="octicon octicon-link"></span></a>Usage</h1>
|
|
|
|
|
-
|
|
|
|
|
-<p>This page contains some common examples of how to use the PHP PhantomJS library.</p>
|
|
|
|
|
-
|
|
|
|
|
-<ul>
|
|
|
|
|
-<li><a href="#basic-request">Basic Request</a></li>
|
|
|
|
|
-<li><a href="#post-request">POST Request</a></li>
|
|
|
|
|
-<li><a href="#other-request-methods">Other Request Methods</a></li>
|
|
|
|
|
-<li><a href="#response-data">Response Data</a></li>
|
|
|
|
|
-<li><a href="#screen-captures">Screen Captures</a></li>
|
|
|
|
|
-<li><a href="#custom-timeout">Custom Timeout</a></li>
|
|
|
|
|
-<li><a href="#delay-page-render">Delay Page Render</a></li>
|
|
|
|
|
-<li><a href="#custom-run-options">Custom Run Options</a></li>
|
|
|
|
|
-</ul><h2>
|
|
|
|
|
-<a name="basic-request" class="anchor" href="#basic-request"><span class="octicon octicon-link"></span></a>Basic Request</h2>
|
|
|
|
|
-
|
|
|
|
|
-<p>A basic GET request:</p>
|
|
|
|
|
-
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createRequest</span><span class="p">();</span>
|
|
|
|
|
- <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setMethod</span><span class="p">(</span><span class="s1">'GET'</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setUrl</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">);</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="k">if</span><span class="p">(</span><span class="nv">$response</span><span class="o">-></span><span class="na">getStatus</span><span class="p">()</span> <span class="o">===</span> <span class="mi">200</span><span class="p">)</span> <span class="p">{</span>
|
|
|
|
|
- <span class="k">echo</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getContent</span><span class="p">();</span>
|
|
|
|
|
- <span class="p">}</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <section id="main_content" class="inner">
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <h1>Introduction</h1>
|
|
|
|
|
|
|
|
-<p>You can also set the URL, request method and timeout period when creating a new request instance through the message factory:</p>
|
|
|
|
|
|
|
+ <p>PHP PhantomJS is a flexible PHP library to load pages through the PhantomJS headless browser and return the page response. It is handy for testing websites that demand javascript support and also supports screen captures.</p>
|
|
|
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
|
|
+ <h2><a name="feature-list" class="anchor" href="#feature-list"></a>Feature List</h2>
|
|
|
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
|
|
+ <ul>
|
|
|
|
|
+ <li>Load webpages through the PhantomJS headless browser</li>
|
|
|
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createRequest</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">,</span> <span class="s1">'GET'</span><span class="p">,</span> <span class="mi">5000</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="k">if</span><span class="p">(</span><span class="nv">$response</span><span class="o">-></span><span class="na">getStatus</span><span class="p">()</span> <span class="o">===</span> <span class="mi">200</span><span class="p">)</span> <span class="p">{</span>
|
|
|
|
|
- <span class="k">echo</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getContent</span><span class="p">();</span>
|
|
|
|
|
- <span class="p">}</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
-
|
|
|
|
|
-<h2>
|
|
|
|
|
-<a name="post-request" class="anchor" href="#post-request"><span class="octicon octicon-link"></span></a>POST Request</h2>
|
|
|
|
|
-
|
|
|
|
|
-<p>A basic POST request:</p>
|
|
|
|
|
-
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createRequest</span><span class="p">();</span>
|
|
|
|
|
- <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$data</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
|
|
|
|
|
- <span class="s1">'param1'</span> <span class="o">=></span> <span class="s1">'Param 1'</span><span class="p">,</span>
|
|
|
|
|
- <span class="s1">'param2'</span> <span class="o">=></span> <span class="s1">'Param 2'</span>
|
|
|
|
|
- <span class="p">);</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setMethod</span><span class="p">(</span><span class="s1">'POST'</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setUrl</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setRequestData</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span> <span class="c1">// Set post data</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
-
|
|
|
|
|
-<h2>
|
|
|
|
|
-<a name="other-request-methods" class="anchor" href="#other-request-methods"><span class="octicon octicon-link"></span></a>Other Request Methods</h2>
|
|
|
|
|
-
|
|
|
|
|
-<p>The PHP PhantomJS library supports the following request methods:</p>
|
|
|
|
|
-
|
|
|
|
|
-<ul>
|
|
|
|
|
-<li>OPTIONS</li>
|
|
|
|
|
-<li>GET</li>
|
|
|
|
|
-<li>HEAD</li>
|
|
|
|
|
-<li>POST</li>
|
|
|
|
|
-<li>PUT</li>
|
|
|
|
|
-<li>DELETE</li>
|
|
|
|
|
-<li>PATCH</li>
|
|
|
|
|
-</ul><p>The request method can be set when creating a new request instance through the message factory:</p>
|
|
|
|
|
-
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createRequest</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">,</span> <span class="s1">'PUT'</span><span class="p">);</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
-
|
|
|
|
|
-<p>Or on the request instance itself:</p>
|
|
|
|
|
-
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createRequest</span><span class="p">();</span>
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setMethod</span><span class="p">(</span><span class="s1">'PATCH'</span><span class="p">);</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
|
|
+ <li>View detailed response data including page content, headers, status code etc.</li>
|
|
|
|
|
|
|
|
-<h2>
|
|
|
|
|
-<a name="response-data" class="anchor" href="#response-data"><span class="octicon octicon-link"></span></a>Response Data</h2>
|
|
|
|
|
|
|
+ <li>Handle redirects</li>
|
|
|
|
|
|
|
|
-<p>A standard response gives you access to the following interface:</p>
|
|
|
|
|
|
|
+ <li>View javascript console errors</li>
|
|
|
|
|
|
|
|
-<table>
|
|
|
|
|
-<thead><tr>
|
|
|
|
|
-<th align="center">Accessor</th>
|
|
|
|
|
-<th>Description</th>
|
|
|
|
|
-<th align="center">Return Type</th>
|
|
|
|
|
-</tr></thead>
|
|
|
|
|
-<tbody>
|
|
|
|
|
-<tr>
|
|
|
|
|
-<td align="center">getHeaders()</td>
|
|
|
|
|
-<td>Returns an array of all response headers.</td>
|
|
|
|
|
-<td align="center">Array</td>
|
|
|
|
|
-</tr>
|
|
|
|
|
-<tr>
|
|
|
|
|
-<td align="center">getHeader(<em>header</em>)</td>
|
|
|
|
|
-<td>Returns the value for a specific response header e.g. Content-Type.</td>
|
|
|
|
|
-<td align="center">Mixed</td>
|
|
|
|
|
-</tr>
|
|
|
|
|
-<tr>
|
|
|
|
|
-<td align="center">getStatus()</td>
|
|
|
|
|
-<td>The response status code e.g. 200.</td>
|
|
|
|
|
-<td align="center">Int</td>
|
|
|
|
|
-</tr>
|
|
|
|
|
-<tr>
|
|
|
|
|
-<td align="center">getContent()</td>
|
|
|
|
|
-<td>The raw page content of the requested page.</td>
|
|
|
|
|
-<td align="center">String</td>
|
|
|
|
|
-</tr>
|
|
|
|
|
-<tr>
|
|
|
|
|
-<td align="center">getContentType()</td>
|
|
|
|
|
-<td>The content type of the requested page.</td>
|
|
|
|
|
-<td align="center">String</td>
|
|
|
|
|
-</tr>
|
|
|
|
|
-<tr>
|
|
|
|
|
-<td align="center">getUrl()</td>
|
|
|
|
|
-<td>The URL of the requested page.</td>
|
|
|
|
|
-<td align="center">String</td>
|
|
|
|
|
-</tr>
|
|
|
|
|
-<tr>
|
|
|
|
|
-<td align="center">getRedirectUrl()</td>
|
|
|
|
|
-<td>If the response was a redirect, this will return the redirect URL.</td>
|
|
|
|
|
-<td align="center">String</td>
|
|
|
|
|
-</tr>
|
|
|
|
|
-<tr>
|
|
|
|
|
-<td align="center">isRedirect()</td>
|
|
|
|
|
-<td>Will return true if the response was a redirect or false otherwise.</td>
|
|
|
|
|
-<td align="center">Boolean</td>
|
|
|
|
|
-</tr>
|
|
|
|
|
-<tr>
|
|
|
|
|
-<td align="center">getConsole()</td>
|
|
|
|
|
-<td>Returns an array of any javascript errors on the requested page along with a stack trace.</td>
|
|
|
|
|
-<td align="center">Array</td>
|
|
|
|
|
-</tr>
|
|
|
|
|
-</tbody>
|
|
|
|
|
-</table><p>If the response contains a status code of 0, chances are the request failed. Check the request <a href="http://jonnnnyw.github.io/php-phantomjs/debugging.html">debug log</a> for more detailed information about what may have gone wrong.</p>
|
|
|
|
|
|
|
+ <li>View detailed PhantomJS debuged information</li>
|
|
|
|
|
|
|
|
-<h2>
|
|
|
|
|
-<a name="screen-captures" class="anchor" href="#screen-captures"><span class="octicon octicon-link"></span></a>Screen Captures</h2>
|
|
|
|
|
|
|
+ <li>Save screen captures to local disk</li>
|
|
|
|
|
|
|
|
-<p>You can save screen captures of a page to your local disk by creating a screen capture request and setting the path you wish to save the file to:</p>
|
|
|
|
|
|
|
+ <li>Define screen capture x, y, width and height parameters</li>
|
|
|
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
|
|
+ <li>Delay page rendering for a specified time</li>
|
|
|
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
|
|
+ <li>Execute PhantomJS with command line options</li>
|
|
|
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createCaptureRequest</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
|
|
+ <li>Easily build and run custom PhantomJS scripts</li>
|
|
|
|
|
+ </ul>
|
|
|
|
|
|
|
|
- <span class="nv">$file</span> <span class="o">=</span> <span class="s1">'/path/to/save/your/screen/capture/file.jpg'</span><span class="p">;</span>
|
|
|
|
|
|
|
+ <h2><a name="prerequisites" class="anchor" href="#prerequisites"></a>Prerequisites</h2>
|
|
|
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setCaptureFile</span><span class="p">(</span><span class="nv">$file</span><span class="p">);</span>
|
|
|
|
|
|
|
+ <p>PHP PhantomJS requires PHP <strong>5.3.0</strong> or greater to run.</p>
|
|
|
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
|
|
+ <h2><a name="installation" class="anchor" href="#installation"></a>Installation</h2>
|
|
|
|
|
|
|
|
-<p>You will need to make sure the directory that you are saving the file to exists and is writable by your application.</p>
|
|
|
|
|
|
|
+ <p>It is recommended that you use Composer to install PHP PhantomJS. First, add the following to your project's composer.json file:</p>
|
|
|
|
|
|
|
|
-<p>You can also set the width, height, x and y axis for your screen capture:</p>
|
|
|
|
|
|
|
+ <div class="highlight highlight-xml">
|
|
|
|
|
+ <pre>
|
|
|
|
|
+"scripts": {
|
|
|
|
|
+ "post-install-cmd": [
|
|
|
|
|
+ "PhantomInstaller\\Installer::installPhantomJS"
|
|
|
|
|
+ ],
|
|
|
|
|
+ "post-update-cmd": [
|
|
|
|
|
+ "PhantomInstaller\\Installer::installPhantomJS"
|
|
|
|
|
+ ]
|
|
|
|
|
+}
|
|
|
|
|
+</pre>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
|
|
+ <p>This will ensure the latest version of PhantomJS is installed for your system, in your bin folder. If you haven't defined your bin folder in your composer.json, add the path:</p>
|
|
|
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
|
|
+ <div class="highlight highlight-xml">
|
|
|
|
|
+ <pre>
|
|
|
|
|
+"config": {
|
|
|
|
|
+ "bin-dir": "bin"
|
|
|
|
|
+}
|
|
|
|
|
+</pre>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createCaptureRequest</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
|
|
+ <p>Finally, install PHP PhantomJS from the root of your project:</p>
|
|
|
|
|
|
|
|
- <span class="nv">$file</span> <span class="o">=</span> <span class="s1">'/path/to/save/your/screen/capture/file.jpg'</span><span class="p">;</span>
|
|
|
|
|
|
|
+ <div class="highlight highlight-xml">
|
|
|
|
|
+ <pre>
|
|
|
|
|
+composer require "jonnyw/php-phantomjs:3.*"
|
|
|
|
|
+</pre>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
- <span class="nv">$top</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
|
|
|
|
|
- <span class="nv">$left</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
|
|
|
|
|
- <span class="nv">$width</span> <span class="o">=</span> <span class="mi">200</span><span class="p">;</span>
|
|
|
|
|
- <span class="nv">$height</span> <span class="o">=</span> <span class="mi">400</span><span class="p">;</span>
|
|
|
|
|
|
|
+ <p>If you would like to use another installation method or would like to see more detailed installation instructions, see the <a href="http://jonnnnyw.github.io/php-phantomjs/installation.html">installation</a> documentation.</p>
|
|
|
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setCaptureFile</span><span class="p">(</span><span class="nv">$file</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setCaptureDimensions</span><span class="p">(</span><span class="nv">$width</span><span class="p">,</span> <span class="nv">$height</span><span class="p">,</span> <span class="nv">$top</span><span class="p">,</span> <span class="nv">$left</span><span class="p">);</span>
|
|
|
|
|
|
|
+ <h2><a name="basic-usage" class="anchor" href="#basic-usage"></a>Basic Usage</h2>
|
|
|
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
|
|
+ <p>The following illustrates how to make a basic GET request and output the page content:</p>
|
|
|
|
|
|
|
|
-<h2>
|
|
|
|
|
-<a name="custom-timeout" class="anchor" href="#custom-timeout"><span class="octicon octicon-link"></span></a>Custom Timeout</h2>
|
|
|
|
|
|
|
+ <div class="highlight highlight-php">
|
|
|
|
|
+ <pre>
|
|
|
|
|
+<span class="o"><?</span><span class="nx">php</span>
|
|
|
|
|
|
|
|
-<p>By default, each request will timeout after 5 seconds. You can set a custom timeout period (in milliseconds) for each request:</p>
|
|
|
|
|
|
|
+<span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
|
|
+<span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
|
|
+<span class="sd">/** </span>
|
|
|
|
|
+<span class="sd"> * @see JonnyW\PhantomJs\Message\Request </span>
|
|
|
|
|
+<span class="sd"> **/</span>
|
|
|
|
|
+<span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span>
|
|
|
|
|
+ <span class="o">-></span><span class="na">createRequest</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">,</span> <span class="s1">'GET'</span><span class="p">);</span>
|
|
|
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createRequest</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
|
|
+<span class="sd">/** </span>
|
|
|
|
|
+<span class="sd"> * @see JonnyW\PhantomJs\Message\Response </span>
|
|
|
|
|
+<span class="sd"> **/</span>
|
|
|
|
|
+<span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
|
|
|
- <span class="nv">$timeout</span> <span class="o">=</span> <span class="mi">10000</span><span class="p">;</span> <span class="c1">// 10 seconds</span>
|
|
|
|
|
|
|
+<span class="c1">// Send the request</span>
|
|
|
|
|
+<span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setTimeout</span><span class="p">(</span><span class="nv">$timeout</span><span class="p">);</span>
|
|
|
|
|
|
|
+<span class="k">if</span><span class="p">(</span><span class="nv">$response</span><span class="o">-></span><span class="na">getStatus</span><span class="p">()</span> <span class="o">===</span> <span class="mi">200</span><span class="p">)</span> <span class="p">{</span>
|
|
|
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
|
|
+ <span class="c1">// Dump the requested page content</span>
|
|
|
|
|
+ <span class="k">echo</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getContent</span><span class="p">();</span>
|
|
|
|
|
+<span class="p">}</span>
|
|
|
|
|
+</pre>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
-<h2>
|
|
|
|
|
-<a name="delay-page-render" class="anchor" href="#delay-page-render"><span class="octicon octicon-link"></span></a>Delay Page Render</h2>
|
|
|
|
|
|
|
+ <p>And if you would like to save a screen capture to local disk:</p>
|
|
|
|
|
|
|
|
-<p>Sometimes when taking screen captures you may want to wait until the page is completely loaded before saving the capture. In this instance you can set a page render delay (in seconds) for the request:</p>
|
|
|
|
|
|
|
+ <div class="highlight highlight-php">
|
|
|
|
|
+ <pre>
|
|
|
|
|
+<span class="o"><?</span><span class="nx">php</span>
|
|
|
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
|
|
+<span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
|
|
+<span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createCaptureRequest</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
|
|
+<span class="sd">/** </span>
|
|
|
|
|
+<span class="sd"> * @see JonnyW\PhantomJs\Message\CaptureRequest </span>
|
|
|
|
|
+<span class="sd"> **/</span>
|
|
|
|
|
+<span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createCaptureRequest</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">,</span> <span class="s1">'GET'</span><span class="p">);</span>
|
|
|
|
|
+<span class="nv">$request</span><span class="o">-></span><span class="na">setCaptureFile</span><span class="p">(</span><span class="s1">'/path/to/save/capture/file.jpg'</span><span class="p">);</span>
|
|
|
|
|
|
|
|
- <span class="nv">$delay</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span> <span class="c1">// 5 seconds</span>
|
|
|
|
|
|
|
+<span class="sd">/** </span>
|
|
|
|
|
+<span class="sd"> * @see JonnyW\PhantomJs\Message\Response </span>
|
|
|
|
|
+<span class="sd"> **/</span>
|
|
|
|
|
+<span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
|
|
|
- <span class="nv">$request</span><span class="o">-></span><span class="na">setDelay</span><span class="p">(</span><span class="nv">$delay</span><span class="p">);</span>
|
|
|
|
|
|
|
+<span class="c1">// Send the request</span>
|
|
|
|
|
+<span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
|
|
|
|
|
-<p>You can set a page render delay for standard requests also.</p>
|
|
|
|
|
|
|
+</pre>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
-<h2>
|
|
|
|
|
-<a name="custom-run-options" class="anchor" href="#custom-run-options"><span class="octicon octicon-link"></span></a>Custom Run Options</h2>
|
|
|
|
|
|
|
+ <p>For more detailed examples see the <a href="http://jonnnnyw.github.io/php-phantomjs/usage.html">usage</a> section, or to create your own custom scripts check out the <a href="http://jonnnnyw.github.io/php-phantomjs/advanced.html">advanced</a> documentation.</p>
|
|
|
|
|
+ </section>
|
|
|
|
|
+ </div><!-- FOOTER -->
|
|
|
|
|
|
|
|
-<p>The PhantomJS API contains a range of command line options that can be passed when executing the PhantomJS executable. These can also be passed in via the client before a request:</p>
|
|
|
|
|
-
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">addOption</span><span class="p">(</span><span class="s1">'--load-images=true'</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">addOption</span><span class="p">(</span><span class="s1">'--ignore-ssl-errors=true'</span><span class="p">);</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createRequest</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
-
|
|
|
|
|
-<p>You can also set a path to a JSON configuration file that contains multiple PhantomJS options:</p>
|
|
|
|
|
-
|
|
|
|
|
-<div class="highlight highlight-php"><pre>
|
|
|
|
|
- <span class="k">use</span> <span class="nx">JonnyW\PhantomJs\Client</span><span class="p">;</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span> <span class="o">=</span> <span class="nx">Client</span><span class="o">::</span><span class="na">getInstance</span><span class="p">();</span>
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">addOption</span><span class="p">(</span><span class="s1">'--config=/path/to/config.json'</span><span class="p">);</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createRequest</span><span class="p">(</span><span class="s1">'http://google.com'</span><span class="p">);</span>
|
|
|
|
|
- <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-></span><span class="na">getMessageFactory</span><span class="p">()</span><span class="o">-></span><span class="na">createResponse</span><span class="p">();</span>
|
|
|
|
|
-
|
|
|
|
|
- <span class="nv">$client</span><span class="o">-></span><span class="na">send</span><span class="p">(</span><span class="nv">$request</span><span class="p">,</span> <span class="nv">$response</span><span class="p">);</span>
|
|
|
|
|
-</pre></div>
|
|
|
|
|
-
|
|
|
|
|
-<p>See the <a href="http://phantomjs.org/api/command-line.html">PhantomJS Documentation</a> for a full list of command line options.</p>
|
|
|
|
|
- </section>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <!-- FOOTER -->
|
|
|
|
|
<div id="footer_wrap" class="outer">
|
|
<div id="footer_wrap" class="outer">
|
|
|
- <footer class="inner">
|
|
|
|
|
- <p class="copyright">php-phantomjs maintained by <a href="https://github.com/jonnnnyw">jonnnnyw</a></p>
|
|
|
|
|
- <p>Published with <a href="http://pages.github.com">GitHub Pages</a></p>
|
|
|
|
|
- </footer>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+ <footer class="inner">
|
|
|
|
|
+ <p class="copyright">php-phantomjs maintained by <a href="https://github.com/jonnnnyw">jonnnnyw</a></p>
|
|
|
|
|
|
|
|
- </body>
|
|
|
|
|
|
|
+ <p>Published with <a href="http://pages.github.com">GitHub Pages</a></p>
|
|
|
|
|
+ </footer>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</body>
|
|
|
</html>
|
|
</html>
|