我有一個更大的查詢形式的MySQL頁面,結果可能超過2MB。因爲我的服務器上沒有足夠的內存(我應該爲mysql安排內存以加快查詢時間),所以我放棄了memcached。相反,它是一個txt文件。php如何鎖定一個文件只有在寫入時才被讀取?
如何將文件鎖定爲這種情況?如果文件是鎖定的,只能讀取,如果文件沒有鎖定,則先寫入然後再讀取。謝謝。
if((time()-filemtime(filename)) > 60){
//mysql_query; query time less than 1.5 seconds
if(ex_lock){ // if file is lock, only read
file_get_contents($filename);
}else{ // if file isn't lock, first write then read
file_put_contents($filename, $query_contents);//some file size could be 2mb
file_get_contents($filename);
}
}
你看過[flock](http://us2.php.net/manual/en/function.flock.php)嗎? – quickshiftin
@quickshiftin,我已經嘗試過例子#1,我試過在'if(flock($ fp,LOCK_EX)){'中添加'sleep(20)'',我發現這會鎖定一個文件,睡20秒。 – cj333
有沒有機會看到將原始數據插入/更新到MySQL的代碼片段? – quickshiftin