导出pdf时超过了30秒的最长执行时间


Maximum execution time of 30 seconds exceeded while exporting pdf

我使用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_timeini参数无关。

通过查看您添加到问题中的标签,您似乎在使用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手册了解更多信息。

在某些情况下,这种缓慢是由一些丢失的项目引起的,如:图像、字体和链接
尝试检查某些图像是否指向无效路径。