致命错误:在php中生成大量缩略图时超过了最大执行时间

致命错误:在php中生成大量缩略图时超过了最大执行时间,php,linux,thumbnails,Php,Linux,Thumbnails,我正在尝试编写一个PHP脚本,该脚本将执行以下操作: 从给定目录中的存档中提取所有文件(使用exec函数实际运行7z) 列出所有图像文件(jpg、jpeg、gif、png)并将它们存储在一个数组中(再次使用exec运行“ls”并仅将图像存储在数组中,我比较扩展名) 在阵列中循环,并针对每个图像: 将该图像移动到唯一文件夹中 在同一唯一文件夹中生成缩略图(我使用) 将新图像记录到数据库中 对于少量图像,我认为脚本工作正常(可能会有很大改进) 我的问题是,经过一定数量(每次运行脚本时似乎都是随机的

我正在尝试编写一个PHP脚本,该脚本将执行以下操作:

  • 从给定目录中的存档中提取所有文件(使用exec函数实际运行7z)

  • 列出所有图像文件(jpg、jpeg、gif、png)并将它们存储在一个数组中(再次使用exec运行“ls”并仅将图像存储在数组中,我比较扩展名)

  • 在阵列中循环,并针对每个图像:
  • 将该图像移动到唯一文件夹中
  • 在同一唯一文件夹中生成缩略图(我使用)
  • 将新图像记录到数据库中
  • 对于少量图像,我认为脚本工作正常(可能会有很大改进)

    我的问题是,经过一定数量(每次运行脚本时似乎都是随机的)处理的图像之后,我会得到一个致命错误:
    PHP致命错误:第217行的/var/www/ims/public_html/dev/include/phpThumb/GdThumb.inc.PHP中超过了60秒的最大执行时间

    imagecopyresampled
    (
        $this->workingImage,
        $this->oldImage,
        0,
        0,
        0,
        0,
        $this->newDimensions['newWidth'],
        $this->newDimensions['newHeight'],
        $this->currentDimensions['width'],
        $this->currentDimensions['height']
    ); // <- this is line 217
    
    imagecopyresampled
    (
    $this->workingImage,
    $this->oldImage,
    0,
    0,
    0,
    0,
    $this->newDimensions['newWidth'],
    $this->newDimensions['newHeight'],
    $this->currentDimensions['width'],
    $this->currentDimensions['height']
    
    ); // php限制允许脚本执行的时间长度。你可以在php.ini中增加这个值,或者使用在每个脚本上增加这个值。转到你的
    php.ini
    文件,找到
    max\u execution\u time
    (大约是我的30%)。把那个号码改成你想要的


    不要忘了输出一个指示器,表明脚本正在按预期运行,这样您就可以看到正在发生的事情。而且,这往往会使我的CPU温度迅速上升,这表明可能有更好的方法来处理问题。

    60秒的时间限制适用于整个脚本化进程。它的主要目的是防止恶意php子进程将apache子进程(或其他web服务器资源)绑定到加载的服务器上

    如果您将php用作shell脚本语言而不是web应用程序,我建议您选择
    set\u time\u limit(0)
    或确保在php cli解释器中运行脚本,该解释器会自动执行此操作


    如果您试图对web服务器中的文档上载/表单发布执行大型批处理操作,则可能需要考虑使用某种作业服务器将处理工作卸载到服务器,而不是将web服务器长期挂起。就是这样一个系统。

    您是否尝试增加php.ini中的超时设置?如果您有access,我使用php函数set_time_limit(60);在脚本的顶部,将执行时间设置为60秒。但要调整1.5MB图片的大小,60秒似乎相当长:s@Jonas:执行时间是整个脚本从头到尾的时间,而不仅仅是调整一个图像的大小。如上所述,我使用相应的php函数设置了最大执行时间,但60秒还不够长吗?