解决多进程或多线程同时读写同一个文件的问题

来源:互联网 发布:免费签名设计软件 编辑:程序博客网 时间:2024/04/29 07:54

解决多进程或多线程同时读写同一个文件的问题

PHP是没有多线程概念的,尽管如此我们仍然可以用“不完美”的方法来模拟多线程。简单的说,就是队列处理。

通过对文件进行加锁和解锁来实现。当一个文件被一个用户操作时,该文件是被锁定的,其他用户只能等待,确实不够完美,但是也可以满足一些要求不高的应用。

1、多进程或多线程同时写同一个文件的解决方案如下:

<?phpfunction T_write($filename, $string) {$fp = fopen($filename, 'a');  // 追加方式打开if (flock($fp, LOCK_EX)) {   // 加写锁:独占锁fputs($fp, $string);   // 写文件flock($fp, LOCK_UN);   // 解锁}fclose($fp);}?>

2、多进程或多线程同时读同一个文件的解决方案如下:

<?phpfunction T_read($filename, $length) {$fp = fopen($filename, 'r');        // 只读方式打开if (flock($fp, LOCK_SH)) {          // 加读锁:共享锁$result = fgets($fp, $length);  // 读取文件一行或length字节长度flock($fp, LOCK_UN);  //解锁}fclose($fp);return $result;}?>




0 0
原创粉丝点击