【问题标题】:PHP running Cronjob and script - timeout / memory queryPHP 运行 Cronjob 和脚本 - 超时/内存查询
【发布时间】:2011-11-10 13:13:23
【问题描述】:

我想每天运行一个脚本,该脚本将从数据库中选择数据,遍历结果并为每行结果执行另一个脚本。然后,第二个脚本将运行更多查询并根据数据创建 XML 文件。有时可能是大量数据。

//RUN SCRIPT DAILY TO GET ALL CATEGORY AND PRODUCT XML FOR STORES
set_time_limit(0);    
$select= "SELECT * FROM bookstores" ; 
$run = mysql_query($select);
while($row = mysql_fetch_array($run)){
    //run 2nd script here but how?
}

我有两个问题:

1) 在 while 循环中执行第二个脚本的最佳方法是什么?第一行的第二个脚本必须在第二行设置脚本再次运行之前完成,还是它们都同时运行?

2)当我运行第二个脚本时,它适用于大多数情况,除非结果太多,在这种情况下我会收到以下错误:

致命错误:允许的内存大小为 134217728 字节已用尽(已尝试 在 /var/www/web/classes/class.Products.inc.php 中分配 71 个字节) 在第 90 行

这会停止脚本 1 的运行还是会移动到下一行并重新执行脚本?注意我在两个脚本中都使用了 set_time_limit() 函数。

非常感谢您就如何在不崩溃的情况下最好地实现这一目标提供任何帮助和建议!

【问题讨论】:

  • 只是一个想法,但如果您也包含第二个脚本的代码,如果可能的话,人们可能会通过指出任何优化来提供帮助。

标签: php memory timeout


【解决方案1】:

如果您遇到内存大小错误,请使用以下内容。

ini_set("memory_limit","256M"); 

// 您可以根据您的服务器 RAM 大小增加内存限制。

建议:

  1. 使用带限制的选择查询。例如。对于每 1000 或 5000 限制,使用 sleep 命令。

希望如此,以上内容对你有帮助。

【讨论】:

  • 谢谢,但我真的需要得到所有的结果,除了增加内存限制之外没有其他方法吗?它已经在 500mb。任何人都可以帮助解决第一点吗?我仍然不知道如何正确执行第二个脚本...
  • 如果无法增加内存限制,则获取书店记录并保存为CSV格式。然后使用 CSV 文件运行第二个脚本。
  • 好的,谢谢,但我仍然如何从第一个脚本运行第二个脚本?我使用 cURL 还是什么?
猜你喜欢
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
相关资源
最近更新 更多