我正在构建一个WordPress主题,并尝试确定导致它运行得如此缓慢的原因。我的functions.php
大约有500行,并且具有与数据库交互的功能,例如
add_action( 'wp_ajax_nopriv_get_N_more', 'get_N_more' );
add_action( 'wp_ajax_get_N_more', 'get_N_more' );
$N = 9;
function get_N_more ( )
{
global $wpdb, $N;
$thisTable = ($_POST['workType'] === 'projs') ? 'wp_nas_projs' : 'wp_nas_cases';
$q = $wpdb->prepare( "SELECT id,compname,descsmall,sumsmall,imageurl FROM $thisTable ORDER BY postdate DESC LIMIT %d, %d", intval($_POST['numItemsLoaded']), $N);
$nextNRows = $wpdb->get_results($q);
removeEscapes($nextNRows);
$stillSomeLeft = ($_POST['numItemsLoaded'] + $N) < count($wpdb->get_results($wpdb->prepare("SELECT * FROM $thisTable")));
// ^ would like more efficient way of doing above
die(json_encode(array('stillSomeLeft' => $stillSomeLeft, 'workItems' => $nextNRows)));
}
每次读取脚本时,这些函数都不会被调用,但我想知道如果首先将它们放在那里可能会导致性能下降,如果PHP每次都读取它们的话
答案 0 :(得分:2)
PHP必须只在请求期间读取您的函数一次,因此不会导致速度减慢。
查看函数的定义:
function get_N_more ( )
{
}
在function_exists()
的支票中没有看守。这意味着,如果此文件在任何地方被解析多次,则执行将失败并报告错误,表明您的get_N_more
函数已在此范围内声明。
在解析脚本期间,从不考虑代码的复杂性和运行时效率,500行是相对微不足道的代码量。
tl; dr:这不是导致您放缓的原因。
答案 1 :(得分:2)
简短的回答是可能。
do_action(...)
,则可能会出现多个ajax请求,并且在发出新请求时超时或被取消。< / LI>
这一切意味着什么?