我在 DigitalOcean 上运行一个每月 5 美元的服务器 - 1 GB RAM、1 VCPU。
我有一个包含 for 循环的脚本,需要一些时间才能运行(我已禁用超时)。
如果我增加服务器的规格(例如增加到 16GB RAM、8 VCPU),这会自动加快任务速度吗?
或者我必须手动实现多线程或者其他什么?
或者将任务拆分成多个块并发出多个 HTTP 请求
这是使用 NGINX
答案1
PHP 是单线程的。增加 CPU 也无济于事。
多线程 PHP 是人们已经承诺了二十年的事情,但至今尚未取得重大进展。如果你尝试的话,我预计会遇到一些难以调试的问题。
最好的办法是并行运行多个脚本来解决部分问题——如果 HTTP 是您唯一的接口,则并发请求是可行的方法。然后分配给您的 vServer 的 CPU 数量就变得很重要。请记住,该机器可能超额认购,因此 CPU 与其他客户共享,分配只会影响它将尝试并行安排的任务数量。
答案2
我有一个包含 for 循环的脚本,运行需要一些时间...如果我增加服务器的规格...这会自动加快任务速度吗?
不是“自动”的,视情况而定
。完全你正在正在做在那个循环里面。
如果你正在执行一些复杂的数值计算,那么当然可以;可能要给它更多的 CPU 能力将要帮助。
如果你正在通过互联网逐页阅读大英百科全书的全部内容,那么就没那么容易了。
第一的找出你需要做的事情,然后了解如何做出色地。