函数.php中的非阻塞文件_PUT_CONTENTS

时间:2020-07-22 作者:Mustafa

我在函数中有一个函数。在save\\u post上调用的php。目前,当用户发布或更新帖子时,将执行此功能,但这将花费大量时间。

使此函数在后台进程中运行的最简单方法是什么-非阻塞?

function export_all_in_json() {
   file_put_contents(ABSPATH.\'all.json\', fopen(\'https://example.com/api/all/get_all_content/\', \'r\'));
}
add_action( \'save_post\', \'export_all_in_json\' );

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

与其联系远程站点以获取昂贵的HTTP请求中的信息,为什么不让远程站点定期向您发送数据?

注册REST API端点以接收该端点中的数据,接收数据并将其保存在all.json

这给了我们一些好处:

save_post 可以完全删除过滤器,使帖子保存更快这通过删除过滤器修复了过滤器中的许多错误,即使没有创建帖子,文件更新也可能发生,现在文件更新是可预测的和常规的,例如每5分钟更新一次,或者每小时一次,这样可以避免多个请求同时发送到API的竞争条件,从而导致额外的服务器负载和损坏的JSON文件。您的API端点需要一点时间来计算JSON数据,因此可以控制它发生的频率,例如,如果站点正在努力将cron作业从5分钟改为10分钟以减轻负载,您可以ping API并告诉它在保存帖子时触发将数据发送到端点,而不是执行完整的获取和保存。这将允许您使用fetch范式,并且仍然具有优势。这与一些支付和身份验证流程的工作方式类似

SO网友:Carlos Faria

也许可以使用动作调度器触发单个异步事件。就像cronjob一样,只触发了一次。

https://actionscheduler.org/

相关推荐

主题中的unctions.php是否适用于所有模板?

我已经读了一段时间主题开发人员手册,也许最后我遇到了太多关于wordpress主题开发的问题。我已经很长时间没有在C#/Java背景下进行任何主题/php开发了。我想我只是想在开始使用wordpress之前有一个清晰的认识,这就是我想做的:为主站点创建一个页面,并将其设置为main,只查询一个类别。我想一个主题的功能就像前/后过滤器/挂钩的控制器创建另一个页面,但只允许某些自定义帖子类型,这一切都会通过函数完成。主题的php</如果这不是我想更好地了解的地方,我很抱歉。如果您需要在评论中进一步澄清,