我有一個每小時左右更新的緩存文件。文件大小範圍從100KB到1MB。緩存更新的方式是使用file_put_contents()方法。PHP在這種情況下提供文件併發性嗎?
只有服務器寫入文件。但是,持續訪問該文件。用戶可以通過腳本訪問該文件,該腳本執行一次讀取readfile()以將其回顯給用戶。
如果正在通過緩存腳本讀取文件,並且服務器運行用戶讀取腳本,或者相反,會出現問題嗎?或者這是由PHP自動處理>
我有一個每小時左右更新的緩存文件。文件大小範圍從100KB到1MB。緩存更新的方式是使用file_put_contents()方法。PHP在這種情況下提供文件併發性嗎?
只有服務器寫入文件。但是,持續訪問該文件。用戶可以通過腳本訪問該文件,該腳本執行一次讀取readfile()以將其回顯給用戶。
如果正在通過緩存腳本讀取文件,並且服務器運行用戶讀取腳本,或者相反,會出現問題嗎?或者這是由PHP自動處理>
基本上,您應該在寫入或讀取時鎖定文件。至少,它保證沒有問題。這是編程的好方法!示例如下所示。
<?php
$fp = fopen("/tmp/lock.txt", "w+");
if (flock($fp, LOCK_EX)) { // do an exclusive lock
fwrite($fp, "Write something here\n");
flock($fp, LOCK_UN); // release the lock
} else {
echo "Couldn't lock the file !";
}
fclose($fp);
?>
使用readfile讀取文件時會發生什麼情況,但鎖定了該文件?還是應該在嘗試閱讀之前檢查它是否被鎖定?在那種情況下,我應該睡一段時間,然後再試一次? –
請注意,您應該在嘗試讀取文件之前進行檢查。 flock()函數鎖定或釋放文件。該函數成功返回TRUE或失敗時返回FALSE。 – lvarayut
是的,這將是一些問題。 – lvarayut
如果是或者不知道如何在您的服務器mod cgi etc中調用php以及您的php.config如何設置......如果一切都正確配置,則沒有問題:D – donald123
什麼樣的我應該尋找在PHP配置文件?另外我想我有php.ini,或者是不同的? –