我有一个 PHP 脚本,可以从供应商合作伙伴处导入数据。它需要做的一件事是通过 shell_exec() 调用另一个脚本,然后处理图像文件并将其上传到 Amazon S3 存储桶。我现在正在终端中查看此脚本的输出,过了一会儿,我看到了一系列消息:
Warning: shell_exec(): Unable to execute 'php -f /path/to/second/script.php /path/to/image/to/process.jpg' in /path/to/this/script.php on line 453
奇怪的是,这个脚本在这个脚本中被多次调用,并且开始工作,然后停止。它也可以从其他脚本中调用,并且在这些脚本中运行良好。当我复制它无法运行的命令并将其粘贴到自己身上时,它总是有效的。显然 PHP 有时能够运行它。
我在每行运行时都放置了内存使用回显,我看到它在正常工作时高达 148MB,在出错时低至 77MB。(这是在主脚本中,而不是无法运行的辅助脚本)。随着错误开始出现,内存使用率似乎越来越低。我第一次注意到它大约是 88MB,然后下降到 85MB、81MB 和 77MB。
我不清楚是什么可能导致脚本有时工作,有时不工作。上次我检查 PHP 不可能决定它是否可以被打扰,并且它不会被磨损,那么为什么它可以正常工作很长时间(我说的是数百个,如果不是数千个成功的话下载)然后突然停止工作。并不是说它正在尝试处理无法下载的图像,因为脚本中有一个条件阻止了这种情况,image does not exist
即使它无法处理其余部分,我也经常看到负载。我最终不得不编写另一个脚本,然后再次运行并处理所有丢失的图像。
任何想法都会非常感激地收到!
顺便说一句,这是在一个带有 Amazon Linux OS 的大型 AWS EC2 实例上运行的。我们正在运行 PHP5.3