我是靠谱客的博主 自信鞋垫,最近开发中收集的这篇文章主要介绍PHP用文件锁模拟进程锁PHP用文件锁模拟进程锁,实现原子操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

PHP用文件锁模拟进程锁,实现原子操作


  • |

  • 浏览:353

  • |

  • 更新:

    2014-06-26 17:31
  1. 笔者碰到一个问题:用PHP实现原子操作,而PHP本身并没有提供进程锁机制?那么如何用PHP实现原子操作呢,幸好PHP有文件锁机制,下面笔者就介绍下如何通过文件锁模拟进程锁实现原子操作。

  2. 原子操作的代码之前,使用排他锁打开某个文件,代码如下:

    $fp = fopen( LOCK_FILE_PATH, "r" );

    if (!$fp) {    

    echo "Failed to open the lock file!
    ";    

    exit(1);//异常处理

    }

    flock ( $fp, LOCK_EX );

  3. 原子操作的代码之后,对该文件解锁,并关闭文件,代码如下:

    flock ( $fp, LOCK_UN );

    fclose ( $fp );

  4. 整体伪代码为:

    define("LOCK_FILE_PATH", "/tmp/lock");

    if( !file_exists(LOCK_FILE_PATH) ){ 

       $fp = fopen( LOCK_FILE_PATH, "w" );

        fclose ( $fp );

    }

    $fp = fopen( LOCK_FILE_PATH, "r" );

    if (!$fp) {

        echo "Failed to open the lock file!
    ";

        exit(1);//异常处理

    }flock ( $fp, LOCK_EX );

    //此处添加原子操作代码

    flock ( $fp, LOCK_UN );

    fclose ( $fp );

  5. 以上便可实现PHP原子操作,避免冲突。


转载于:https://blog.51cto.com/haocaige/1693063

最后

以上就是自信鞋垫为你收集整理的PHP用文件锁模拟进程锁PHP用文件锁模拟进程锁,实现原子操作的全部内容,希望文章能够帮你解决PHP用文件锁模拟进程锁PHP用文件锁模拟进程锁,实现原子操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部