我建立了一個網站,我用彗星與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