[php] phpでjavascriptをコマンドレベルで実行できるPHP PhantomJSをインストール

目次

phpでjavascriptをコマンドレベルで実行できるPHP PhantomJSをインストール

cronを使用してphpのコマンドレベルでjavascriptを実行しようとしたのだが、
javascriptは基本的にブラウザで実行されるためサーバサイドで実行できない

PhantomJSというライブラリがあってコマンドレベルでjavascriptを実行できるが、
PhantomJSをPHPで使用できる「PHP PhantomJS」をCentOSにインストール

インストール

composerを使用してインストールするので、composer環境がない場合はcomposerを事前に準備しておくこと

[php] Composerをインストール

composer.jsonに以下のコードを追記

{
    "scripts": {
        "post-install-cmd": [
            "PhantomInstaller\\Installer::installPhantomJS"
        ],
        "post-update-cmd": [
            "PhantomInstaller\\Installer::installPhantomJS"
        ]
    },
    "require": {
        "jonnyw/php-phantomjs": "4.*"
    }
}

composerを使用してインストール

php composer.phar require "jonnyw/php-phantomjs:4.*"

使い方:

他のパッケージ同様、vender/autoload.phpをrequireすれば良い

サンプル(webページの画面キャプチャをjpegで保存):

getMessageFactory()->createCaptureRequest(
        $web_url, // url
        'GET',  // method
        3000);  // timeout(second)

    $client->getEngine()->addOption('--proxy=host:port');
    $request->setQuality(75); // default 75
    $request->setCaptureDimensions($viewport_width, $viewport_height); // キャプチャ範囲
    $request->setFormat('jpeg'); // pdf, png, jpeg, bmp, ppm, gif
    $request->setOutputFile($output_file);
    $request->setViewportSize($viewport_width, $viewport_height);
    $response = $client->getMessageFactory()->createResponse();
    $client->send($request, $response);
    header('Content-type: image/jpeg');
    readfile($output_file);
}

?>

注意点:

インストールが成功したにもかかわらず

"Error when executing PhantomJs procedure "default" - File does not exist or is not executable: bin/phantomjs"

とphantomjsが見つからないというエラーが発生した場合は

    $client->getEngine()->setPath('/usr/bin/phantomjs'); // phantomjs path

とphantomjsのパスを通してあげると動作する

/usr/bin/にphantomjsがあることが前提。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です