set_time_limit(0)仍然会导致超时错误

问题描述 投票:0回答:1

我有一个 WordPress 插件,可以处理所有帖子,所以需要很长时间。

为了防止超时,我在防止 PHP 中大请求期间超时

中使用了 set_time_limit(0)

但这不起作用,过了一段时间,我仍然收到以下错误:

504 Gateway Time-out
nginx/1.25.3

我们的服务器配置是 Apache + Nginx + Cloudflare

谢谢

更新

根据 volkerschulz 的建议,我计划使用 CLI 或 WP_CLI 来执行我的脚本。

目前我的脚本是这样调用的:

https://www.sample.com/blogs/wp-admin/admin-post.php?action=dnip_myplugins&nocache=123

所以对于我的情况,我应该使用如下所示的 CLI:

PHP /path/to/script/admin-post.php?action=dnip_myplugins&nocache=123

或使用 WP-CLI:

I cannot find a command that can execute a script. The only one related is wp plugin, but it can only install/activate/deactive plugins
php wordpress timeout
1个回答
0
投票

如上所述,(长时间运行的)维护脚本不应通过 Web 服务器执行,而应直接通过 shell 执行。最简单的方法可能是创建一个新的 PHP 文件(最好在 Web 根目录之上),其中包含以下内容:

<?php

define('WP_USE_THEMES', false);
require_once '/path/to/wp-load.php';

//Call whatever function from WP core or plugin to do the maintenance task
myCustomPluginClass::amazingMaintenanceStuff();

然后通过 CLI 调用 that_script.php (

php that_script.php
)。通过这种方式,您还可以轻松地仅为该脚本配置超时和内存限制。

更好(但稍微复杂一点)是创建自定义 WP-CLI 命令或添加一个 WP cron 作业,该作业不能由用户执行,只能由 WP-CLI 通过系统的 crontab 执行。

© www.soinside.com 2019 - 2024. All rights reserved.