WordPress操作和筛选器挂钩是否异步运行?

时间:2015-11-17 作者:Loc Pham

我有一些功能需要运行相当长的时间才能完成。这些函数通过hooks注册(即。add_action()add_filter()). 当我的任务长时间运行或挂钩异步运行时,它会影响最终用户吗?

谢谢

2 个回复
最合适的回答,由SO网友:Mateusz Hajdziony 整理而成

处理请求时,操作和筛选器以线性方式解决。它们不会异步运行。如果在每个请求期间都有一些繁重的处理(例如,在每个用户的每次页面加载期间都使用操作和筛选挂钩,如template_redirect, init 或者无论您使用的是什么常见的钩子),那么它都会影响页面的加载时间,并且可能会消耗大量服务器的CPU时间。

如果您执行了一些繁重的数据处理,而不需要为每个页面负载运行(这不是为每个用户计算的,也不必在随意浏览时让用户访问),那么您可以考虑使用WP Cron或在服务器上设置Cron作业。

否则,您可能会使用AJAX异步加载所需的数据,即首先显示没有经过特殊处理的数据的页面,然后向服务器发送AJAX请求,服务器将获取数据。这样,初始页面加载速度很快,用户看到某种加载动画,知道您的网站正在获取数据。

SO网友:aifrim

不管怎样action/filterhooked 将您的代码写入它们(回调)DO NOT 异步运行。

PHP不是Javascript/Java/C或任何其他编程语言;允许异步函数、用户定义线程等的编译器/解释器。。你为什么会这样想?PHP是一个允许创建动态网站的文本处理器。在一组parameters is返回某个HTML 后果一定是这样的fastthe Flash 它不能等待async functions 在发送结果之前结束。

你的网站之所以滞后,是因为你的功能在那里做了一些繁重的工作。

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。