WP_REMOTE_GET-CURL错误28-仅在相同域上

时间:2019-06-24 作者:Seba

在我的网站上我使用wp_remote_get 从mydomain获取数据。com/wp-json/wp/v2/pages/75

当我在本地主机上运行它时,它工作得很好,但在发送到生产服务器(mydomain.com)后,突然出现了错误:\'cURL error 28: Operation timed out after 5000 milliseconds with 0 bytes received’ + VPS开始表现得疯狂(100%的cpu使用率和内存)。

It can’t retrieve data from the same domain. 当我将url更改为一些随机REST模型时,它又开始工作了。

如何从同一域上的WP REST获取数据??

(VPS信息:debian 9、php 7.3、curl 7.52.1和最新wordpress 5.2.2)

提前感谢!

1 个回复
SO网友:Ali Basheer

默认情况下,WordPress在wp includes/class wp http cURL中设置cURL的超时值。php设置为5秒,在wp includes/class HTTP中,同样的值也设置为HTTP请求。php是一个较新的用于发出HTTP请求的类,如果服务器中存在,也可以使用cURL。

在您的情况下,5秒钟不足以执行WP REST调用,但足以执行虚拟调用。一般来说,在大多数情况下,就执行HTTP请求而言,5秒钟应该足够了。但在WP REST端点中,您似乎做了太多需要5秒钟以上的工作。

您可以通过以下过滤器将超时值增加到任何值(例如15秒)。

function custom_http_request_timeout( ) {
    return 15;
}
add_filter( \'http_request_timeout\', \'custom_http_request_timeout\' );