似乎是一个很长的问题。我想根据一般经验发表一些意见。
我使用 PHP 脚本在服务器上执行多项任务。我想知道如果我为三个不同的任务使用三个不同的脚本,或者根本不重要,是否会有所不同?
考虑到我一次指望 2-3k 用户(晚上,非常罕见),我仍然买不起每月 300 美元的服务器
似乎是一个很长的问题。我想根据一般经验发表一些意见。
我使用 PHP 脚本在服务器上执行多项任务。我想知道如果我为三个不同的任务使用三个不同的脚本,或者根本不重要,是否会有所不同?
考虑到我一次指望 2-3k 用户(晚上,非常罕见),我仍然买不起每月 300 美元的服务器
人们使用 cronjobs 来制作 PHP 多任务是很常见的。我想这就是你想要做的。我只是将这些脚本作为 cronjobs 运行,如果证明服务器的负载很重,那么您可能应该考虑升级您的网络。300 美元对于一台服务器来说是很多,你可以从 AWS 获得一个不错的数据库服务器,预付 100 英镑,每月 7 英镑,使用小型实例,专用服务器基础就可以了。
请注意,如果您正在运行相同的脚本多任务处理(同一脚本的许多 crons 运行多个小时),您将需要对数据进行乐观锁定之类的操作,否则您将遭受严重损失。
当然,如果这对您的服务器来说有点太费力了,您为什么不考虑将您的处理租借给像iron.io这样更好的地方呢?有许多处理网络可以愉快且廉价地减轻您的处理负担。
我个人一直在研究的另一个替代方案是 AWS Spot 实例,这是多么了不起的创造!我有一堆 Auto Scaling 微型实例,每小时花费我 0.005c,而 Auto Scaling 组可以在 0 个服务器上工作,这意味着当它不被使用时,它会花费我很多钱。我肯定会说要查看用于处理脚本的现场实例,甚至可能为这些脚本保存剩余数据,这样你就不会在数据库上施加负载。无论哪种方式,它都比每月 300 美元便宜得多。
但是要回答你的标题,我每 2 小时在我的 AWS 小型实例处理数据等上运行 150 个 cronjobs,不,我还没有推翻 PHP 或我的服务器,同样在 CLI 模式下 PHP 没有超时,所以如果你做长时间处理使用如下命令:
php myscript.php
运行您的处理作业。
使用单独的脚本将帮助您识别每个脚本的问题。您将在日志中获得指向确切文件的错误消息和指针。
它还可以帮助您查看哪个脚本运行时间长(est),如果一个脚本崩溃,它不会影响其他脚本。您可以更轻松地监控哪些脚本需要优化。
只要确保它们不相互依赖即可。
取决于脚本的目的以及将发出多少并发请求。假设它将是基于 php-mysql 的,我想说它主要取决于您的查询的性能。所以是的,我知道由于 MySQL 守护进程负载过大而导致网络服务器无法超时的脚本;即使是选定数量的用户。
希望对你有用!
您可能还想检查 php.ini 文件以了解您的 php 安装。默认超时为 30 秒,因此根据服务器上的负载,如果您的脚本到那时还没有完成执行,您的任务将失败。您可以增加此值,但请注意,它可能会对任何耐心等待超过 30 秒以等待从前端执行任何长时间脚本的用户产生影响。
除此之外,在非高峰流量期间,仅使用一项任务就很难使任何现代服务器超载。