0

我的代码是:

$b_data_proxy = $dn." ".$cv." ".$dom_name." ".$record_ttl." ".substr($now,0,strlen($now)-1).$more_ip_address;<br>
                        $b_ftemp = fopen("$fdoc_spool/temp_b", 'a+');<br>
                        fwrite($b_ftemp, $b_data_proxy."\n");<br>
                        fclose($b_ftemp);

如您所见,当一个用户访问该页面时,这是正确的。但是两个用户同时访问该页面。他们将写入相同的 temp_b 文件。我不想使用不同的 temp_b 名称。

这可能是个问题,他们会在同一时间写入同一个文件。但是 $b_data_proxy 的大小小于 4kB。所以我想知道我是否应该处理并发?因为大小小于4KB。

我的系统信息:Linux YF-2321 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

谢谢你。

4

2 回答 2

0

如果您担心他们同时写入同一个文件,那么只需使用每个用户唯一的临时文件进行写入。然后删除主文件并将临时文件重命名为主文件的名称。最后一个移动文件的将永远获胜。使用这种方法,您的文件将永远不会处于损坏状态,并且您不必进入文件锁定/并发技术。

于 2012-09-28T03:57:52.573 回答
0

使用 memcache 之类的东西锁定文件或使用数据库。

if( file_not_locked )


    //create lock
    //open file 
    //do stuff
    //close file
    //free lock
于 2012-09-28T04:08:26.113 回答