如何为多个用户运行php脚本?

如何为多个用户运行php脚本?,php,multithreading,web,Php,Multithreading,Web,我在php脚本example.php中得到了一些代码。此脚本运行约30-60秒,并为一个用户执行一些操作 php仅为一个给定用户运行atm,在我的用户表上循环并为每个用户运行此脚本的最佳方式是什么 脚本现在每~5分钟调用一次,这应该保持不变,因为每个用户都应该启动脚本 我正在我的Web服务器上运行PHP7.2,我已经在cronjobs上尝试过了。这只适用于一个硬编码用户。如果我将所有用户的循环放在这个脚本中,运行时间将非常长。我试图在plesk上安装pthreads,但这也有点复杂 如前所述,它

我在php脚本example.php中得到了一些代码。此脚本运行约30-60秒,并为一个用户执行一些操作

php仅为一个给定用户运行atm,在我的用户表上循环并为每个用户运行此脚本的最佳方式是什么

脚本现在每~5分钟调用一次,这应该保持不变,因为每个用户都应该启动脚本

我正在我的Web服务器上运行PHP7.2,我已经在cronjobs上尝试过了。这只适用于一个硬编码用户。如果我将所有用户的循环放在这个脚本中,运行时间将非常长。我试图在plesk上安装pthreads,但这也有点复杂


如前所述,它已经对一个用户有效,但我不知道让它对所有用户运行的最佳方式是什么。

我的解决方案是对所有用户进行循环,并从循环中调用该函数,但如果你说这需要很长时间,我看不到加快速度的方法

我认为没有一种方法可以通过cronjob为用户提供支持。
您是否有代码片段供我们查看?

目前,当我需要并行运行许多PHP脚本时,我所做的是使用一个队列系统,一方面,您将有一个启动器脚本,将任务推送到队列中,例如在Redis服务器上实现。这就是cron作业将要做的。每5分钟将调用launcher脚本,该脚本会将每个用户的一个作业推送到队列中,因为您可以将参数推送到队列中,您可以将用户作为参数推送到任务中

shell_exec("/path/to/php /path/to/example.php '".$user_id."' 'alert' >> /path/to/your_log/result.log &");
另一方面,您可以拥有任意多的侦听器,例如,可以通过以下方式管理侦听器进程。这些监听器正在等待一个任务从队列独立处理,每当他们找到一个他们可以做的任务时,他们都会执行它,这样你就可以根据自己的意愿同时执行任意多个任务

您目前对用户所做的操作的实现是在侦听器代码中编写的。这只是一个简单的方法来解释整件事,我鼓励您通读,它会更清楚。

您可以使用shell\u exec来执行php文件,并将各种用户id作为参数

shell_exec("/path/to/php /path/to/example.php '".$user_id."' 'alert' >> /path/to/your_log/result.log &");
符号&很重要,因为它告诉服务器作为后台运行此进程

您可以实现一些队列系统和推送作业作为后台进程


希望能有所帮助。

感谢大家回答cronjob,因为现在刚刚打开URL,我现在使用外部cronjob服务来实现这一点。在脚本中,$user_id是硬编码的``*编辑谢谢大家回答cronjob,现在刚刚打开URL,我现在使用一个外部cronjob服务。在脚本中,$user_id是硬编码的。实现它通过URL提供参数没有问题,但问题是如何通过另一个脚本或类似cron-job.org调用的脚本来运行这个php文件。我也想在我的服务器上实现这一切,但如果没有外部服务,我不知道一个合适的方法!我稍后会尝试,这可能是解决方案!谢谢