Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重任务调度_Php_Wordpress - Fatal编程技术网

Php 重任务调度

Php 重任务调度,php,wordpress,Php,Wordpress,我正在为WordPress开发一个插件,它使用PHP从远程网站获取数据并将其显示在网页上获取此数据大约需要2-5秒 该插件有自己的缓存系统,可以在固定的时间间隔内获取和存储新数据 问题在于,任务调度器基于访问者,因此如果经过足够的时间,就会有某个访问者需要等待2-5秒才能获取数据并将其缓存到数据库中。如何避免这种情况 使用Wordpress的内置任务调度程序不是一个解决方案,因为它的操作方式与缓存系统相同 PHP Cron作业也不是解决方案,因为它依赖于主机 如何安排耗时的任务在后台运行而不

我正在为WordPress开发一个插件,它使用PHP从远程网站获取数据并将其显示在网页上获取此数据大约需要2-5秒

该插件有自己的缓存系统,可以在固定的时间间隔内获取和存储新数据

问题在于,任务调度器基于访问者,因此如果经过足够的时间,就会有某个访问者需要等待2-5秒才能获取数据并将其缓存到数据库中。如何避免这种情况

  • 使用Wordpress的内置任务调度程序不是一个解决方案,因为它的操作方式与缓存系统相同
  • PHP Cron作业也不是解决方案,因为它依赖于主机
如何安排耗时的任务在后台运行而不影响页面加载时间?
请注意,这是一个WordPress插件,因此解决方案不应依赖于平台

如果托管服务器兼容,您可以尝试cronjob。也许您可以制作一个特殊的缓存php脚本,并将其放在位于主页的iframe上。如果您的插件页面位于索引页面之后,那么将AJAX调用添加到refresh.php(或任何您想调用的)以在后台刷新数据会起作用吗?或者,如果您在网站上有shell访问权限:运行cronjob获取新数据。@ccKep这听起来是个好主意。如果用户没有在页面上停留5秒钟,它还会在服务器上完成AJAX调用吗?我不知道如果连接关闭,apache(或您正在使用的任何httpd)是否会杀死线程,或者是否允许php(模块或调用的cli)完成。如果没有:请先将数据加载到临时文件,然后在脚本末尾移动它们,这样您就知道它们都已完成。@ccKep您能详细说明一下吗?请记住,这是一个WordPress插件,我无法控制用户的设置。这可能是对这个问题的一个很好的回答。您可以发布一些当前数据获取代码的片段吗?(比如打开连接、读取数据、关闭连接并保存数据)这样,也许我可以发布一些对你有帮助的东西。不过我对wordpress插件不太熟悉,因此我的建议直到现在都是PHP在获取数据时的常规做法。这是一个问题,因为cron作业依赖于主机,我正在寻找一个跨平台的解决方案,然后在iframe上创建自己的cronjob。这在主页加载时不会有效,只是浏览器上会有一条指示信息“等待xxxx.php响应”,当访问者导航到另一个页面后,您的iframed php页面脚本继续工作。这将是一个糟糕的解决方案,您可以开发这个想法。也许你的插件缓存页面可以控制页面内容是否改变。如果它改变了,你的缓存就不工作了。也许你可以把这个iframe放在插件索引页面上。Iframe不会影响加载此页面,您可以说“请等待内容正在加载”。