我使用wkhtmltopdf导出pdf,当我尝试在本地或从同一网络中的其他机器导出pdf时,它运行良好但是当我试图从另一台电脑导出pdf时,而不是从同一网络导出时,我收到了这个错误消息
FatalErrorException in WindowsPipes.php line 207:
Maximum execution time of 30 seconds exceeded
这是为了确保一个糟糕的脚本不会消耗太多资源。为了让您的PHP脚本能够长时间运行,您需要使用以下任何方法来增加PHP脚本的最大执行时间限制;-更多信息,请访问:https://www.simplified.guide/php/increase-max-execution-time
编辑php.ini文件并找到以下行:
max_execution_time
将其值更改为300:
max_execution_time = 300
否则,您需要在php页面的开头添加以下行:
ini_set('max_execution_time', 300); //seconds
您的循环可能是无穷无尽的。您需要将其添加到php页面的顶部
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
否则添加此行
ini_set('max_execution_time', 0);
您必须最大限度地延长执行时间
如果您在Live服务器上工作,则创建一个名为user.ini的文件并编写以下代码。(将user.ini文件保存在同一文件夹中)
max_execution_time = 600 // 600 seconds
如果您在localhost上工作,那么您可以使用如下的ini_set()函数,
ini_set('max_execution_time', 600); //600 seconds
最可取的方法是这样做,这样您就不必添加它来将这些代码添加到所有页面中。转到C://xampp/php/php.ini
中的php.ini
,然后转到看起来像max_execution_time = 30
的行。您可以将值更改为所需的秒数。保存该值并重新启动XAMPP服务器
您提到的问题与PHP的max_execution_time
ini参数无关。
通过查看您添加到问题中的标签,您似乎在使用PHP Laravel框架。您可能正在使用一个PHP库,该库使用wkhtmltopdf
来生成PDF(例如,从HTML内容),即KnpLabs/KnpSnappyBundle。
这样的库不使用exec函数,它会阻塞PHP脚本,直到它及时完成或超过max_execution_time。相反,它使用proc_open函数,该函数将执行wkhtmltopdf
命令并打开用于输入/输出的文件指针,从而立即返回(因此max_execution_time
将无效)。
如果是这种情况,那么Maximum execution time of 30 seconds exceeded
的原因与您使用的库密切相关。
如果您的库使用进程驱动的类来执行wkhtmltopdf
命令,那么您所描述的问题可能与使用KnpNappy库的人所描述的原因相同。如果是这样的话,请检查这些链接,这可能会有所帮助:
- https://github.com/KnpLabs/KnpSnappyBundle/issues/69
- https://github.com/KnpLabs/snappy/issues/169
在我的例子中,问题与PHP会话和cookie
参数有关,所以我配置了我的库,以便将--cookie
参数传递给wkhtmltopdf
命令。查看wkhtmltopdf手册了解更多信息。
在某些情况下,这种缓慢是由一些丢失的项目引起的,如:图像、字体和链接
尝试检查某些图像是否指向无效路径。