【发布时间】:2016-01-05 14:31:56
【问题描述】:
万事如意,
这实际上是我提出的第一个问题,但是我虔诚地使用堆栈溢出及其出色的搜索功能,但我在这里停下来。
我一直在编写一些 PHP 代码,这些代码基本上接受澳大利亚机场的用户输入,获取与飞机类型相关的 PDF(无论出于何种原因,出版商将它们作为单个 PDF 发布),并将它们放入一个 PDF文件。我现在已经让它运行得相当顺利,但计划中的最后一个问题是,当你放置在许多机场(或有很多 PDF 的机场)时,它超过了 max_execution_time 并给我一个 500 内部服务器错误。不幸的是,我使用 GoDaddy 的共享主机,无法在 php.ini 或带有 set_time_limit() 的脚本中更改这一点。这家伙有同样的问题,我和他一样一无所获:PHP GoDaddy maximun execution time not working
无论如何,除了切换我的主机之外,我唯一的想法就是分解 php 代码,这样它就不会一次全部运行。唯一的问题是我正在运行一个 foreach 循环,我完全不知道从哪里开始。
这是我保存 PDF 的代码:
foreach ($pos as $po){
file_put_contents("/dir/temp/$chartNumber$po", file_get_contents("http://www.airservicesaustralia.com/aip/current/dap/$po"));
$chartNumber = $chartNumber + 1;
}
数组 $pos 是通过网站的正则表达式搜索生成的,只需要很少的时间,保存 PDF 文件让我很头疼,如果它设法得到所有文件,合并可能需要一点时间这段代码的时间也是如此:
exec("gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=/dir/finalpdf/$date.pdf /dir/temp/*.pdf");
我的问题是,有没有什么办法可以在单独的脚本中执行每个 foreach 循环,然后从中断的地方继续?还是该换新主机了?
提前干杯!
【问题讨论】:
-
瓶颈是什么?获取文档还是调用 ghostscript?