Ad超时
您应该能够使用过滤器绕过超时
add_filter( \'http_request_timeout\', \'wpse35826_timeout_extd\' );
function wpse35826_timeout_extd( $time )
{
// Default timeout is 5
return 10;
}
选择正确的协议/方案关于协议/方案问题:如果是本地安装,可以使用条件。
function wpse35826_remote_get( $args )
{
$protocol = is_SSL() ? \'https://\' : \'http://\';
$response = wp_remote_get( "{$protocol}test:8888/?p=1" );
if ( is_wp_error( $response ) )
return "{$response->get_error_code()}: {$response->get_error_message()}";
return print htmlspecialchars( var_export( $response, true ) );
}
// Trigger the request
wpse35826_remote_get();
如果您正在向您的
own 本地服务器,则SSL验证可能存在问题。WP使用过滤器触发其设置:
add_filter( \'https_local_ssl_verify\', \'__return_false\' );
此筛选器不(!)本地服务器向web上的服务器发出请求的触发器。对于外部服务器,请使用以下筛选器:
add_filter( \'https_ssl_verify\', \'__return_false\' );
本地请求存在问题然后也可能存在阻止本地请求的问题:
add_filter( \'block_local_requests\', \'__return_false\' );
其他可能影响您执行本地请求能力的因素是在
wp-config.php
文件:
WP_HTTP_BLOCK_EXTERNAL
// If WP_HTTP_BLOCK_EXTERNAL is defined you can add hosts which shouldn\'t be blocked.
WP_ACCESSIBLE_HOSTS
如果您使用代理:
// Allows you to define some adresses which shouldn\'t be passed through a proxy.
// Core sets both www and non-www as bypass.
// get_option(\'siteurl\') and localhost are bypassed by default.
WP_PROXY_BYPASS_HOSTS
没有卷曲如果有
cURL
不可用,并且您没有将数据流式传输到文件,WP将回退到使用
Fsocketopen()
相反从核心评论中可以很好地总结:
Fsocketopen在某些版本的PHP的IPv6中存在“localhost”问题,它试图连接到::1,当服务器未为其设置时,它会失败。为了兼容性,请始终连接到IPv4地址。
关键是,只有当我们得到主机名时,WP才会加入localhost
. 然后,fsocketopen主机将设置为\'127.0.0.1\'
.