这会阻止我的页面呈现吗?
Does this block the rendering of my page?
生成我网站所有页面的 PHP 开头就像
log_visitor_info(
$_SERVER['REMOTE_ADDR'],
$_SERVER['REQUEST_URI'],
$_SERVER['HTTP_REFERER'],
$_SERVER['HTTP_USER_AGENT']
);
调用函数
function log_visitor_info ( $ip, $pgurl, $refurl, $aginfo )
{
global $wpdb, $ipsToIgnore;
if (!in_array($ip, $ipsToIgnore)) {
$wpdb->insert('wp_nas_visits', array(
'ip'=>$ip,
'refurl'=>$refurl,
'pgurl'=>$pgurl,
'aginfo'=>$aginfo
));
}
}
$wpdb->insert
正在向数据库中插入内容。因为我在页面的其他任何地方都不需要这些信息,所以如果可以异步执行 log_visitor_info
或 "in the background",我更愿意。我认为这会减慢我的页面加载速度。有什么方法可以将 log_visitor_info
放在单独执行的服务器队列中(如果这样的事情存在......)?我有 Windows Server 2012。
未经测试,我不是 WordPress 专家或粉丝,但如果您想使用 AJAX,应该可以适应。首先,创建一个 PHP 页面 (logger.php) 并添加以下内容:
//include files needed to instantiate $wpdb
$ipsToIgnore = unserialize($argv[1]);
$dataToInsert = unserialize($argv[2]);
if (!in_array($dataToInsert['ip'], $ipsToIgnore)) $wpdb->insert('wp_nas_visits', $dataToInsert);
其次,在生成您站点所有页面的 PHP 的开头,将您的函数和函数调用替换为:
$ips = escapeshellarg(serialize($ipsToIgnore));
$args = escapeshellarg(serialize(array('ip' => $_SERVER['REMOTE_ADDR'],
'pgurl' => $_SERVER['REQUEST_URI'],
'refurl' => $_SERVER['HTTP_REFERER'],
'aginfo' => $_SERVER['HTTP_USER_AGENT'])));
pclose(popen("start /B /path/to/php.exe /path/to/logger.php $ips $args", "r"));
您可能还需要 escapeshellarg()
php.exe 的路径和 logger.php 的路径,尤其是当它们中有空格时。
生成我网站所有页面的 PHP 开头就像
log_visitor_info(
$_SERVER['REMOTE_ADDR'],
$_SERVER['REQUEST_URI'],
$_SERVER['HTTP_REFERER'],
$_SERVER['HTTP_USER_AGENT']
);
调用函数
function log_visitor_info ( $ip, $pgurl, $refurl, $aginfo )
{
global $wpdb, $ipsToIgnore;
if (!in_array($ip, $ipsToIgnore)) {
$wpdb->insert('wp_nas_visits', array(
'ip'=>$ip,
'refurl'=>$refurl,
'pgurl'=>$pgurl,
'aginfo'=>$aginfo
));
}
}
$wpdb->insert
正在向数据库中插入内容。因为我在页面的其他任何地方都不需要这些信息,所以如果可以异步执行 log_visitor_info
或 "in the background",我更愿意。我认为这会减慢我的页面加载速度。有什么方法可以将 log_visitor_info
放在单独执行的服务器队列中(如果这样的事情存在......)?我有 Windows Server 2012。
未经测试,我不是 WordPress 专家或粉丝,但如果您想使用 AJAX,应该可以适应。首先,创建一个 PHP 页面 (logger.php) 并添加以下内容:
//include files needed to instantiate $wpdb
$ipsToIgnore = unserialize($argv[1]);
$dataToInsert = unserialize($argv[2]);
if (!in_array($dataToInsert['ip'], $ipsToIgnore)) $wpdb->insert('wp_nas_visits', $dataToInsert);
其次,在生成您站点所有页面的 PHP 的开头,将您的函数和函数调用替换为:
$ips = escapeshellarg(serialize($ipsToIgnore));
$args = escapeshellarg(serialize(array('ip' => $_SERVER['REMOTE_ADDR'],
'pgurl' => $_SERVER['REQUEST_URI'],
'refurl' => $_SERVER['HTTP_REFERER'],
'aginfo' => $_SERVER['HTTP_USER_AGENT'])));
pclose(popen("start /B /path/to/php.exe /path/to/logger.php $ips $args", "r"));
您可能还需要 escapeshellarg()
php.exe 的路径和 logger.php 的路径,尤其是当它们中有空格时。