我的代码是:
$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
谢谢。
答案 0 :(得分:0)
如果您担心他们同时写入同一个文件,那么只需使用每个用户独有的临时文件进行编写。然后删除主文件并将临时文件重命名为主文件的名称。移动文件的最后一个将永远赢。使用此方法,您的文件将不会处于损坏状态,并且您不必进入文件锁定/并发技术。
答案 1 :(得分:0)
使用memcache或使用数据库锁定文件。
if( file_not_locked )
//create lock
//open file
//do stuff
//close file
//free lock