方案一:

    1. function writeData($filepath, $data)
    2. {
    3. $fp = fopen($filepath,'a');
    4. do{
    5. usleep(100);
    6. }while (!flock($fp, LOCK_EX)); //LOCK_EX 取得独占锁定(写入的程序)进行排它型锁定 获取锁 有锁就写入,没锁就得
    7. $res = fwrite($fp, $data."\n");
    8. flock($fp, LOCK_UN); //LOCK_UN 释放锁定(无论共享或独占)。
    9. fclose($fp);
    10. return $res;
    11. }

    方案二(自己做标记):

    1. function write_file($filename, $content)
    2. {
    3. $lock = $filename . '.lck';
    4. $write_length = 0;
    5. while(true) {
    6. if( file_exists($lock) ) {
    7. usleep(100);
    8. } else {
    9. touch($lock);
    10. $write_length = file_put_contents($filename, $content, FILE_APPEND);
    11. break;
    12. }
    13. }
    14. if( file_exists($lock) ) {
    15. unlink($lock);
    16. }
    17. return $write_length;
    18. }

    方案三:

    使用队列