我正在使用wordpress来处理流量非常高的网站。 php5-fpm的日志显示xmlrpc.php文件执行速度太慢。
[03-May-2016 16:47:32] WARNING: [pool www] child 17754, script '/var/www/html/test/xmlrpc.php' (request: "POST /xmlrpc.php") executing too slow (10.292389 sec), logging
我通过添加过滤器来禁用functions.php文件中的xmlrpc函数:
add_filter('xmlrpc_enabled', '__return_false');
但它不起作用。警告仍在出现。我认为一些机器人或IP正在打它。那么,我怎样才能找到哪个IP请求xmlrpc.php文件以便我可以禁用它?
答案 0 :(得分:1)
当客户向xmlrpc.php
发出请求时,我们可以使用没有操作挂钩。但我们可以使用wp-config.php
。
在wp-config.php
文件中尝试此操作:
function wpse37002439_get_ip_address() {
if ( !empty($_SERVER['HTTP_CLIENT_IP']) ) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
if ( defined('XMLRPC_REQUEST') ) {
$ip = wpse37002439_get_ip_address();
$content = '[' . date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME'])
. '] [CAPTURED IP: ' . $ip . '] [REMOTE_ADDR: ' . $_SERVER['REMOTE_ADDR'] . "] \n";
file_put_contents(__DIR__.'/wp-content/xmlrpc_access.log', $content, FILE_APPEND);
}
确保xmlrpc_access.log
文件可用。你可以自己改变它。
我强烈建议您查看this topic。