For the record, the example given here has an explicit command to truncate the file, however with a 'write mode' of 'w', it will do this for you automatically, so the truncate call is not needed.(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::flock — Portable file locking
$operation, int &$wouldBlock = null): boolLocks or unlocks the file in the same portable way as flock().
operation
       operation is one of the following:
       
LOCK_SH to acquire a shared lock (reader).
         
        LOCK_EX to acquire an exclusive lock (writer).
         
        LOCK_UN to release a lock (shared or exclusive).
         
        
       It is also possible to add LOCK_NB as a bitmask to one 
       of the above operations, if flock() should not
       block during the locking attempt.
      
wouldBlock
       Set to true if the lock would block (EWOULDBLOCK errno condition).
      
   成功时返回 true, 或者在失败时返回 false。
  
示例 #1 SplFileObject::flock() example
<?php
$file = new SplFileObject("/tmp/lock.txt", "w");
if ($file->flock(LOCK_EX)) { // do an exclusive lock
    $file->ftruncate(0);     // truncate file
    $file->fwrite("Write something here\n");
    $file->flock(LOCK_UN);   // release the lock    
} else {
    echo "Couldn't get the lock!";
}
?>For the record, the example given here has an explicit command to truncate the file, however with a 'write mode' of 'w', it will do this for you automatically, so the truncate call is not needed.@digitalprecision What you said is not completely true, ftruncate(0); is needed if there was a write to the file before the lock is acquired. You also may need fseek(0); to move back the file pointer to the beginning of the file
<?php
$file = new SplFileObject("/tmp/lock.txt", "w");
$file->fwrite("xxxxx"); // write something before the lock is acquired
sleep(5); // wait for 5 seconds
if ($file->flock(LOCK_EX)) { // do an exclusive lock
    $file->fwrite("Write something here\n");
    $file->flock(LOCK_UN);   // release the lock    
} else {
    echo "Couldn't get the lock!";
}
?>
"lock.txt" content:
xxxxxWrite something here