我似乎无法显示自定义.proc文件的响应。我在ubuntu上的laravel 5.6上运行php-phantomjs。我有一个URL端点我用来调用自定义文件,如下所示:
public function getLinks()
{
$location = base_path('phantom-scripts');
$serviceContainer = ServiceContainer::getInstance();
$procedureLoader = $serviceContainer->get('procedure_loader_factory')
->createProcedureLoader($location);
$client = Client::getInstance();
$client->getEngine()->setPath(\Config::get('phantomPath'));
$client->setProcedure('my_procedure');
$client->getProcedureLoader()->addLoader($procedureLoader);
$request = $client->getMessageFactory()->createRequest();
$response = $client->getMessageFactory()->createResponse();
$client->send($request, $response);
dd($response->getContent());
}
这里是.proc文件
var page = require('webpage').create();
var fs = require('fs');
console.log("loading...");
var url = 'http://www.example.com';
page.open(url, function (status) {
if (status === "success") {
var contentNeeded = page.evaluate(function () {
return document.querySelector("h1").outerHTML;
});
console.log(contentNeeded);
}
});
phantom.exit();
我想显示内容需要'在我的浏览器上。
答案 0 :(得分:1)
PhantomJS在您的脚本中退出太早。
page.open
次调用是异步的(谁知道打开该网址需要多长时间),因此phantom.exit()
会在浏览器开始打开该网址后立即运行。在回调中获取信息后退出PhantomJS:
if (status === "success") {
var contentNeeded = page.evaluate(function () {
return document.querySelector("h1").outerHTML;
});
console.log(contentNeeded);
phantom.exit();
}