人偶不会从控制器中的laravel exec()加载页面

时间:2018-10-09 18:13:43

标签: php node.js laravel puppeteer

在127.0.0.1:8000上运行的Laravel 5.6

我有一个使用Puppeteer并打开页面的文件Capture.js

127.0.0.1:8000/渲染

当我从命令行调用它时,效果很好。

node capture.js

现在,当我使用

在laravel控制器中调用它时
exec('node capture.js' )

它会启动Puppeteer,但该页面无法加载(超时)

当我尝试使用controller.capture.js加载另一个页面(例如google.fr)时,效果很好。

与网络有关吗? 8000端口上的localhost?

无头假或真给出相同结果=>超时

2 个答案:

答案 0 :(得分:1)

您正在从启动laravel应用所需的文件中调用exec。由于exec阻止了laravel应用程序启动,因此超时了。

这是正在做的事的例子,

Laravel应用->木偶游戏->等待!提取Laravel应用

答案 1 :(得分:0)

我在Symfony 3.4项目中遇到了完全相同的问题。

问题出在会议上:

调用exec()命令时,已经存在一个PHP会话,并且该会话文件被锁定。 当NodeJS脚本尝试连接时,会出现超时,因为会话文件不可用。

我通过在exec()命令上方添加以下指令来解决该问题:

session_write_close();