【问题标题】:PHP - Continue Execute Another Looping After Execute LoopingPHP - 执行循环后继续执行另一个循环
【发布时间】:2013-05-23 15:46:35
【问题描述】:

我的数据库中有上千个电子邮件地址。我想给他们发信息。但是每次发送都会报错“500 Internal Server Error. Request Timeout. 这个请求处理时间过长,是服务器超时了。如果不应该超时,请联系本站管理员增加'连接超时”。

我已将 maximum_execution_time、set_time_limit 或其他类似的设置为 0(或无限制)。最后它会请求超时。有什么解决办法吗?

我的代码

<?php
$query = mysql_query("SELECT * FROM user");
while($q=mysql_fetch_array($query)){
  // Send email to $q['user_email']
  echo "sent to ".$q['user_email'];
}
?>

我可以在成功执行一个循环后不超时再执行一个循环吗?

也许是这样的?

<?php
$query = mysql_query("SELECT * FROM user LIMIT 0,99");
while($q=mysql_fetch_array($query)){
  // Send email to $q['user_email']
  echo "sent to ".$q['user_email'];
}
//do another looping
$query = mysql_query("SELECT * FROM user LIMIT 100,199");
while($q=mysql_fetch_array($query)){
  // Send email to $q['user_email']
  echo "sent to ".$q['user_email'];
}
?>

【问题讨论】:

  • 是的...如果您的第一个循环有效,那么您的第二个循环也应该如此
  • set-time-limit 和其他在safe-mode 中不起作用。见PHP manual

标签: php timeout connection-timeout


【解决方案1】:

我认为循环时 set_time_out 内存在问题。

一种可能的解决方案是在每次迭代之前设置_time_out(0)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2013-02-09
    相关资源
    最近更新 更多