Puppeteer 不会从控制器中的 laravel exec() 加载页面
Puppeteer won't load page from laravel exec() in controller
Laravel 5.6 运行 127.0.0.1:8000
我有一个文件 capture.js 使用 Puppeteer 并打开页面
127.0.0.1:8000/渲染
当我从命令行调用它时,它工作得很好。
node capture.js
现在,当我使用
在 laravel 控制器中调用它时
exec('node capture.js' )
它启动了 Puppeteer,但页面未加载(超时)
当我尝试从控制器 capture.js 加载另一个页面时(例如:google.fr)它运行良好。
跟网络有关系吗?端口 8000 上的本地主机?
headless false 或 true 给出了相同的结果 => TIMEOUT
您正在从启动 laravel 应用程序所需的文件中调用 exec
。它正在超时,因为 exec 正在阻止 laravel 应用程序启动。
这是正在做的事情的一个例子,
Laravel App -> Puppeteer -> 等等!去获取 Laravel 应用程序
我在 Symfony 3.4 项目中遇到了完全相同的问题。
问题来自会话:
调用exec()命令时,PHP会话已经存在,会话文件被锁定。
当 NodeJS 脚本尝试连接时,会超时,因为会话文件不可用。
我通过在 exec() 命令上方添加以下指令解决了这个问题:
session_write_close();
Laravel 5.6 运行 127.0.0.1:8000
我有一个文件 capture.js 使用 Puppeteer 并打开页面
127.0.0.1:8000/渲染
当我从命令行调用它时,它工作得很好。
node capture.js
现在,当我使用
在 laravel 控制器中调用它时exec('node capture.js' )
它启动了 Puppeteer,但页面未加载(超时)
当我尝试从控制器 capture.js 加载另一个页面时(例如:google.fr)它运行良好。
跟网络有关系吗?端口 8000 上的本地主机?
headless false 或 true 给出了相同的结果 => TIMEOUT
您正在从启动 laravel 应用程序所需的文件中调用 exec
。它正在超时,因为 exec 正在阻止 laravel 应用程序启动。
这是正在做的事情的一个例子,
Laravel App -> Puppeteer -> 等等!去获取 Laravel 应用程序
我在 Symfony 3.4 项目中遇到了完全相同的问题。
问题来自会话:
调用exec()命令时,PHP会话已经存在,会话文件被锁定。 当 NodeJS 脚本尝试连接时,会超时,因为会话文件不可用。
我通过在 exec() 命令上方添加以下指令解决了这个问题:
session_write_close();