保持PHP函数在后台运行
我正在创建一个从不同网站获取用户数据的小插件。数据不必是最新的,我不想为此使用cronjob 相反,每次访问网站时,我都想检查数据库是否需要更新。现在需要一段时间才能更新整个数据库,我不希望用户等待保持PHP函数在后台运行,php,Php,我正在创建一个从不同网站获取用户数据的小插件。数据不必是最新的,我不想为此使用cronjob 相反,每次访问网站时,我都想检查数据库是否需要更新。现在需要一段时间才能更新整个数据库,我不希望用户等待 是否有一种方法可以在后台启动函数。用户将正常工作,但在后台数据库正在更新。您可能希望使用exec()命令将输出重定向到文件或/dev/null,否则PHP将等待命令完成后再继续使用脚本 exec('/path/to/php /path/to/myscript.php 2>&1 >
是否有一种方法可以在后台启动函数。用户将正常工作,但在后台数据库正在更新。您可能希望使用
exec()
命令将输出重定向到文件或/dev/null,否则PHP将等待命令完成后再继续使用脚本
exec('/path/to/php /path/to/myscript.php 2>&1 > /dev/null');
有许多异步执行PHP代码的解决方案。最简单的方法是异步调用shell exec。要在PHP中实现更复杂的真正并行处理,请尝试 Gearman背后的想法是,你将有一个执事,通过将任务分配给工人来为你管理工作。您将编写两个PHP文件:
您还可以使用
正如您在php.net示例中所看到的,在函数调用之后有两个执行线程。父线程可以像往常一样完成,而子线程可以继续做自己的事情用户需要脚本中的任何信息吗?也就是说,它最终会向用户返回任何东西吗?如果没有,只需使用
exec()
函数在服务器上执行脚本即可。不,用户不需要获取任何内容。他将只获取当前可用的数据。谢谢,这似乎是一个比exec()更好的解决方案。我需要处理数据库,我想如果我使用exec,我必须重新进行所有数据库连接。创建一个单独的线程听起来更好。