php是不支持多線程的,可以通過加鎖來實現(xiàn)多進(jìn)程同時操作同一文件:
<?php
$fp = fopen("1.txt", "w+");
if(flock($fp, LOCK_EX)){ //排他鎖
fwrite($fp, "writing something here \n");
flock($fp, LOCK_UN);
}else{
echo 'cannot lock the file';
}
fclose($fp);
flock函數(shù)的第二個參數(shù)的意義為:
要取得共享鎖定(讀取的程序),將 lock 設(shè)為 LOCK_SH(PHP 4.0.1 以前的版本設(shè)置為 1)。
要取得獨占鎖定(寫入的程序),將 lock 設(shè)為 LOCK_EX(PHP 4.0.1 以前的版本中設(shè)置為 2)。
要釋放鎖定(無論共享或獨占),將 lock 設(shè)為 LOCK_UN(PHP 4.0.1 以前的版本中設(shè)置為 3)。
如果不希望 flock() 在鎖定時堵塞,則給 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中設(shè)置為 4)。