是否有可能使 PHP 脚本过载或通过过多请求 PHP 脚本来使服务器过载


is it possible to overload a php script or to overload server via requesting a php script too much?

似乎是一个很长的问题。我想要一些基于一般经验的意见。

我使用 PHP 脚本在服务器上执行多个任务。我想知道如果我为三个不同的任务使用三个不同的脚本是否会有所不同,或者这根本不重要?

考虑到我一次依靠 2-3k 用户(晚上时间,非常罕见),但我仍然买不起每月 300 美元的服务器

使用单独的脚本将帮助您识别每个脚本的问题。您将在日志中收到错误消息和指向确切文件的指针。

此外,它还可以帮助您查看哪个脚本运行时间长(est),如果一个脚本崩溃,则不会影响其他脚本。您可以更轻松地监控哪些脚本需要优化。

只要确保它们不相互依赖即可。

取决于脚本的用途以及将发出的并发请求数。假设它将是基于php-mysql的,我会说这主要取决于你的查询的性能。所以是的,我知道一些脚本由于 MySQL 守护程序上的负载太重而导致 Web 服务器无法超时;即使是选定数量的用户。

希望对你有用!

您可能还需要检查 php 安装的 php.ini 文件。 默认超时为 30 秒,因此根据服务器上的负载,如果脚本到那时尚未完成执行,则任务将失败。 您可以增加此值,但请注意,这可能会对任何耐心等待大约超过 30 秒的用户产生影响,以便从前端等待任何长时间执行的脚本。

除此之外,在非高峰流量时间,仅用一个任务使任何现代服务器过载都是非常困难的。

人们使用 cronjobs 使 PHP 多任务是很常见的。我想这就是你想做的。我只会将这些脚本作为cronjobs运行,如果负载对服务器来说很重,那么您可能应该考虑升级您的网络。300 美元对于服务器来说很多,您可以从 AWS 获得一台像样的数据库服务器,预付 100 英镑,使用小型实例每月 7 英镑,这对于专用服务器基础来说很好。

请注意,如果您正在运行相同的脚本多任务处理(同一脚本的许多 cron 运行数小时),您将需要对数据进行乐观锁定之类的东西,否则您将遭受严重损失。

当然,如果这对您的服务器来说有点太费力了,为什么您不考虑将您的处理借给像 iron.io 这样更好的地方呢?有许多处理网络可以愉快而廉价地减轻您的处理负担。

我个人一直在研究的另一种选择是 AWS 竞价型实例,真是太棒了!我有一堆自动扩展的微型实例,每小时花费我 0.005c,并且自动扩展组可以在 0 台服务器上工作,这意味着当它不使用时,它会花费我。我肯定会说查看用于处理脚本的 spot 实例,甚至可能保存这些脚本的残留数据,这样您就不会给数据库带来负载。无论哪种方式,它都比每月 300 美元便宜得多。

但是要回答您的标题,我在我的 AWS 小型实例上每 150 小时运行 2 个 cronjobs 处理数据等,不,我还没有推翻 PHP 或我的服务器,同样在 CLI 模式下 PHP 没有超时,所以如果你进行长时间处理,请使用如下命令:

php myscript.php

运行处理作业。