php是不支持多线程的,可以通过加锁来实现多进程同时操作同一文件:
<?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函数的第二个参数的意义为:
要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。
要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。
要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。
如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。
网友评论