我在WordPress插件中执行某种cronjob,执行以下操作。当需要触发cronjob时,它会向正在访问的用户发送一段jquery代码。一旦脚本加载到前端,它就会将一个帖子发送回服务器并执行需要执行的操作。
现在,在服务器上触发的功能需要很长时间才能完成,这就是我这样做的原因。在PHP中我有ignore_user_abort(true);
所以如果用户关闭浏览器并不重要。如果出于某种原因没有针对特定用户触发操作,我会在后备版本中进行构建。
对于访问的特定用户,浏览器一直等待回复,这对所有问题都很有效。有没有办法可以在服务器收到jQuery帖子后立即将其打破。
如果有人为我模仿cronjob有另一个更好的解决方案,请告诉我。我不想依赖exec()
,pcntl_form
,wp-cron
这样的功能,因为它们通常会被用户禁用。
答案 0 :(得分:1)
我认为客户端实际上并没有等待请求完成(至少它不应该,如果你有异步和一切......)
但无论如何,如果它仍然是一个问题,你可以发送请求,然后使用xhr.abort();
或者等等,比如,一两秒钟。
答案 1 :(得分:0)
也许你可以使用jQuery的Async插件:http://plugins.jquery.com/project/async