1

我目前有一个网站因“过度使用系统资源”而被我的托管服务提供商两次暂停。在每种情况下,我的一个 PHP 脚本都有 300 - 400 个崩溃副本留在服务器上运行。

脚本本身从家里的网络摄像头提取图像并将其复制到服务器。他们利用文件锁来确保一次只有一个人可以写入。任何查看该页面的客户端每 3 秒调用一次脚本。

最初我很困惑,因为我知道 PHP 脚本要么完成(返回结果),要么崩溃(返回内部服务器错误页面)。然而,我被告知“失效的脚本”是一种非常常见的情况。

有人可以教育我吗?我已经用谷歌搜索死了,但我看不到脚本如何最终处于崩溃状态。当它达到最大执行时间时会不会超时?

我的托管服务提供商在 Linux 平台上使用 PHP 作为 CGI 设置。我相信我实际上已经发现了我的脚本的问题,因为我没有意识到flock 是一个阻塞函数(而且我没有使用LOCK_NB 掩码)。我假设我的脚本的数百个副本最终被阻止等待资源可用,这会导致崩溃?这听起来合理吗?我不愿意重新启用该网站,因为担心它会再次被暂停。

任何见解都非常感谢。

4

2 回答 2

1

可能我推荐的方法是先使用tempnam()并在里面写入内容(这可能需要一段时间)。完成后,您将执行文件锁定等。

不确定在完成 PUT 请求时是否会发生这种情况;通常 PHP 会先处理文件上传,然后再将执行交给您的脚本。

于 2012-08-15T13:43:03.547 回答
0

脚本可能会因这两个限制而崩溃

  • max_execution_time
  • 内存限制

在使用资源时,除非您在脚本中没有其他错误/也检查通知错误

于 2012-08-15T12:14:48.363 回答