详情页

PHP 1000个进程同时利用file_put_contents的追加FILE_APPEND模式

时间:2023年04月13日

编辑:佚名

1000个进程同时利用file_put_contents的追加FILE_APPEND模式,不会出现写入的数据被覆盖?
<?php
// fork出1000个进程查询,内存大,cpu屌,1000个进程怎么了?
// 我买个CPU不就是为的用它么,你省着干什么?
for ( i = 1 ; i <= 1000; i++ ) {
  pid = fork();
  // 在子进程里查询
  if ( 0 == pid ) {
    ret = get_dizhi_by_phone( '手机号' );
    // 查询出来后,记录到data.log文件里
    file_put_contents( 'data.log', ret, FILE_APPEND );
    exit;
  }
}
考虑到 “多进程写入同一文件可能会导致数据覆盖” 可能会导致上亿的损失,我决定认真对待一下这个问题,于是我写了下面的代码测试了一波儿:
复制代码
<?php
for ( $i = 1; $i <= 30; $i++ ) {
  $pid = pcntl_fork();
  if ( 0 == $pid ) {
    $my_pid = posix_getpid();
    for ( $counter = 1; $counter <= 10000; $counter++ ) {
      file_put_contents( "./api.log", "record\r\n", FILE_APPEND );
      //file_put_contents( "./api.log", date( 'Y-m-d H:i:s' ).' : '.$str."\r\n", FILE_APPEND|LOCK_EX );
    }
    exit;
  }
}
顺带给看不懂代码的萌新说明一下
相关文章
猜你需要