2012-10-15 31 views
1

可能重複:
File resource persistence in PHP如何保持文件在PHP中打開?

如果使用fopen打開一個文件,它會在PHP腳本的末尾,即使沒有fclose關閉和取消。

$fp = fopen('data.txt', 'w'); 
fwrite($fp, 'text'); 
fclose($fp); 

現在,如果這是一個經常使用的腳本,我們需要打開/關閉與文件系統的次數太多的文件(文件I/O)。保持文件打開會更好。這是數據庫系統使用的技術。

在PHP中有一個函數讓文件保持打開狀態,並且不會在下次運行時重新打開它嗎?

或者我們如何設置一個半服務器來讓文件打開以供PHP頻繁訪問?

+1

是最好關閉文件..如果不將它鎖定.... – Baba

+1

@Baba:沒有,默認情況下這個不能鎖定。相關:http://stackoverflow.com/questions/5449395/file-locking-in-php,它也取決於http://php.net/fopen中的模式。默認情況下,在PHP中不允許獨佔文件訪問 – hakre

+0

@hakre感謝您的澄清 – Baba

回答

1

不 - 你不能。您可以在腳本/腳本的開頭打開該文件,最後關閉它。您可以儘可能多地使用開幕式和閉幕式之間的操作。例如,您可以在網站的標題中打開文件,然後在頁腳關閉它。

要解決您需要的任務,您可能需要查看名爲memcahced的PHP擴展。它將在機器的RAM中存儲一些信息,以便稍後重新使用它們。您還可以添加每條信息的到期時間。

看看這裏這個模塊:http://www.php.net/manual/en/book.memcached.php

1

您可以使用flock()鎖定文件。自PHP 5.3.2開始,文件保持鎖定狀態直到明確解鎖,因此您需要確保運行代碼的服務器上PHP的版本高於或至少爲5.3.2

+0

雅這將工作[見這裏](http://php.net/manual/en/function.flock.php)可能會幫助你。 –

+1

@wasimkazi,考慮到PHP自己的文檔,使用w3schools有點不合適,請參閱[w3fools](http://w3fools.com) – Havelock

+0

我更新了我的鏈接。現在它是PHP自己的文檔。 –

0

沒有的方式來保持一個文件的同一腳本(幸運:)

打開文件的sereral執行之間的開放是不是很密集,我懷疑它不值得建立的是保持文件打開「半服務器」。

爲什麼你需要那個?