【问题标题】:gateway time out error in php wamp serverphp wamp服务器中的网关超时错误
【发布时间】:2020-03-08 03:57:39
【问题描述】:

我在长时间运行的 php 脚本中遇到超时错误。我尝试使用以下代码设置执行时间:

ini_set('max_execution_time', 1200);

我也尝试在 apache conf 文件中设置 max_execution_time。但是问题没有解决。仍然有同样的问题。脚本中有一个 Firebase 云消息模块,可以将一些数据推送到 Android 设备。当我评论这部分代码时。网关超时错误未显示。但该代码在脚本中很重要,不能评论。这可能是什么原因?谁能帮我解决这个问题?

  if ($result->num_rows > 0) {
                        // output data of each row
                        while($row = $result->fetch_assoc()) {
                          $deviceid=$row["id"];
                          $regId=$row["regid"];
                        if($regId != null){
                          $json = $push->getPush();
                          $response = $firebase->send($regId, $json);
                        }

                        }
                    }

该脚本实际上在表中插入了太多行,并使用 fcm 推送该数据。如果插入的行数较少,则它正在工作。

【问题讨论】:

  • 结果中有多少行?你在使用什么库,如果不是库,则显示 $push 和 $firebase 对象代码。超时后的错误信息是什么,必须有行号,你做了什么调试?
  • ini_set('max_execution_time', 0); 是最大执行时间。
  • 脚本实际上在表中插入了太多行。如果插入的行数较少,则它正在工作。你知道可能是什么原因吗?
  • 然后批量做或使用队列系统

标签: php android firebase-cloud-messaging wampserver timeoutexception


【解决方案1】:

恕我直言,您必须在每次迭代中重置执行时间限制,如下所示:

while($row = $result->fetch_assoc()) {
    set_time_limit(1200);
    // ...
}

https://www.php.net/manual/en/function.set-time-limit.php

【讨论】:

    【解决方案2】:

    问题似乎与从结果中提取的许多记录有关,您能否在您的 SQL 查询中应用 2 的限制并检查一次。

    【讨论】:

    • 脚本实际上在表中插入了太多行。如果插入的行数较少,则它正在工作。你知道可能是什么原因吗?
    • 我认为 firebase 端可能存在限制,即每秒/分钟只允许某些记录,不确定,但您应该查看那里的文档
    猜你喜欢
    • 1970-01-01
    • 2017-07-17
    • 2011-07-12
    • 2019-05-19
    • 2011-02-03
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多