【发布时间】:2011-09-09 21:54:14
【问题描述】:
我有一个 PHP 脚本,它遍历数据库中的所有产品并查看会话文件以查看哪些产品在用户的购物篮中。然后它释放分配给篮子的库存,但这些篮子的会话已过期。很简单。
对于循环中的每个产品,它都会打印出产品 ID。
如果我从命令行运行脚本:
./release.php
它贯穿所有产品 (~2500)。但是,如果脚本是由 crontab 运行的,那么它会增加 150 到 300 个产品;然后它会停止而没有任何错误。
crontab -l # m h dom mon dow 命令 */3 * * * * /var/www/vhosts/example.com/release.php &> $HOME/release.log
/var/log/cron.log 也没有什么用处:
6 月 7 日 10:00:01 xxxxxxx /USR/SBIN/CRON[15751]: (root) CMD (/var/www/vhosts/example.com/release.php &> $HOME/log)
【问题讨论】:
-
可能内存用完了。你的 php cli 环境是否分配了足够的内存?
-
$HOME/log中有用的东西? -
设置执行时间更长 => max_execution_time :每个脚本的最大执行时间,以秒为单位(默认 30 秒) => max_input_time :每个脚本可能花费在解析请求数据上的最长时间(60 秒) = > memory_limit : 脚本可能消耗的最大内存量(默认 8MB)
-
你检查过你的php错误日志吗?
-
您每 3 分钟运行一次此命令。脚本运行一次是否需要超过 3 分钟?如果是这样,可能有一次运行会干扰前一次运行。