PHP 脚本运行完成,但超时


PHP script runs to completion, but is timing out

我有一个PHP脚本,其中包含许多数据库查询,并复制了多个数据库表,因此需要相当长的时间才能完成。 我遇到的问题是它超时了。然而,它似乎已经完成,这是令人困惑的。

脚本应该在完成后重定向到查看。 但是,即使将时间限制延长到 5 分钟,它也给了我超时错误页面。 但是,当我检查数据库时,所有表都已完全复制,表明脚本已完成。

我在这里错过了一些简单的东西吗? 是否有一般原因会超时而不是重定向到视图? 我会发布一些代码,但整个脚本大约有 1000 行代码,所以在这里展示似乎有点广泛。

另外,我正在使用CodeIgniter。

提前感谢您的帮助!

PHP 脚本可能没有超时,但您使用的浏览器已经放弃等待任何结果。如果是这种情况,您需要以不同的方式处理整个事情。例如,在后台运行脚本并通过 AJAX 或其他方式报告定期更新。

可以这样想:

  1. 您的浏览器会向您的服务器询问网页并等待结果。

  2. 您的服务器运行您的PHP脚本,然后要求MySQL运行查询,并等待结果。

  3. MySQL运行查询并将结果返回给PHP。

  4. PHP 会做更多的处理,并向浏览器返回结果。

在第 3 步,PHP 可能已超时,不再存在。MySQL不知道,当它工作时,它只是做了它的工作,然后将结果交还给无所事事。

在步骤 4 中,浏览器可能已超时并断开连接。PHP 不会知道这一点,所以它完成了它的工作,然后返回了一个结果。

在此示例中,这是两个单独的超时,但无论哪种方式,您的查询都是完成的。