php使用flock阻塞写入文件和非阻塞写入文件

待我称王封你为后i 2022-07-18 05:28 250阅读 0赞

阻塞写入代码:(所有程序会等待上次程序执行结束才会执行,30秒会超时)

  1. <?php
  2. $file = fopen("text.txt","w+");
  3. $t1 = microtime(TRUE);
  4. if (flock($file,LOCK_EX))
  5. {
  6. sleep(30);
  7. fwrite($file,"Write something");
  8. flock($file,LOCK_UN);
  9. echo "Ok locking file!";
  10. }
  11. else
  12. {
  13. echo "Error locking file!";
  14. }
  15. fclose($file);
  16. $t2 = microtime(TRUE);
  17. echo sprintf("%.6f",($t2-$t1));

非阻塞写入代码:(只要文件被占用,则显示Error locking file!)

  1. <?php
  2. $file = fopen("text.txt","a+");
  3. $t1 = microtime(TRUE);
  4. if (flock($file,LOCK_EX|LOCK_NB))
  5. {
  6. sleep(30);
  7. fwrite($file,"Write something");
  8. flock($file,LOCK_UN);
  9. echo "Ok locking file!";
  10. }
  11. else
  12. {
  13. echo "Error locking file!";
  14. }
  15. fclose($file);
  16. $t2 = microtime(TRUE);
  17. echo sprintf("%.6f",($t2-$t1));

Error locking file!0.000096

Ok locking file!30.002354

发表评论

表情:
评论列表 (有 0 条评论,250人围观)

还没有评论,来说两句吧...

相关阅读