我建立了一个网站,我用彗星与PHP。只要我做了一些研究并找到教程看起来很容易实现,对服务器也没有特别的要求,除了它会使用大量的资源。现在,我收到托管通知,我的脚本正在吃掉90%的CPU资源:(我把脚本关掉了,但我的问题是现在最好使用什么?我读了关于node.js的内容,但也读了他们会需要一些必要条件有关服务器的任何好,容易在这种情况下实施的解决方案php彗星:吃的CPU资源
那是要确定与VPS或专用服务器,如果让说,我有每天2000个用户在这个彗星脚本
编译的???
/*CLOSE THE SESSION WITH USER DATA*/
session_write_close();
// set time expire unlimited
set_time_limit(0);
$OldPostID = isset($_REQUEST['OldPostID']) ? intval($_REQUEST['OldPostID']) : 0;
$result_set_query_1 = $MClass->MyPostings($PageOwner);
if (mysql_num_rows($result_set_query_1))
{
$o = 0;
while ($r = @mysql_fetch_array($result_set_query_1))
{
$PID = $r['PID'];
}
}
$NewPostID = $PID;
while ($NewPostID <= $OldPostID)
{
usleep(10000); // sleep 10ms to unload the CPU
clearstatcache();
$result_set_query_2 = $MClass->MyPostings($PageOwner);
if (mysql_num_rows($result_set_query_2))
{
$o = 0;
while ($rs = @mysql_fetch_array($result_set_query_2))
{
$PID = $rs['PID'];
}
}
$NewPostID = $PID;
}
// return a json array
$result_set_posts = $MClass->GetAllMyPostings($PageOwner, $OldPostID, 0);
}
谢谢。我只是用我用于彗星的代码更新了问题。我用set_time_limit无限。我不确定这段代码是否有问题。谢谢 – 99Points
@ 99分这很好 - 但它仍然没有说太多! CPU在哪里?它是MYSQL查询吗?查询是搜索索引还是探索性的?具有10行或1000万行的SQL数据库?不暴露胆量就很难说清楚。但是,请尝试下面的nanosleep想法,并尝试限制SQL结果,如果它是由于SQL。 – FredTheWebGuy
而我只提到SQL是一种可能性,因为除了IO--它也直接与SQL使用相关,它是造成脚本速度下降的最主要原因。 – FredTheWebGuy