zoukankan      html  css  js  c++  java
  • php脚本使用多进程处理数据

     1 <?php
     2 ini_set('memory_limit', -1);
     3 require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
     4 
     5 
     6 $arr = range(0, 1000000);
     7 
     8 class TestRunnable implements JennerSimpleForkRunnable
     9 {
    10     protected $data;
    11 
    12     public function __construct(array $data)
    13     {
    14         $this->data = $data;
    15         #$this->data[0] = 1;
    16     }
    17 
    18     /**
    19      * @return void
    20      */
    21     public function run()
    22     {
    23         sleep(10);
    24         echo getmypid() . ':done当前内存'.(memory_get_usage()/2014/1024).'M' . PHP_EOL;
    25     }
    26 }
    27 
    28 
    29 echo '当前内存'.(memory_get_usage()/1024/1024).'M'.PHP_EOL;
    30 
    31 $pool = new JennerSimpleForkPool();
    32 $pool->execute(new JennerSimpleForkProcess(new TestRunnable($arr)));
    33 $pool->execute(new JennerSimpleForkProcess(new TestRunnable($arr)));
    34 $pool->execute(new JennerSimpleForkProcess(new TestRunnable($arr)));
    35 
    36 $pool->wait();

    注意利用fork进程写时复制特性节省内存

    15行代码注释时,

    当前内存32.427764892578M
    1545:done当前内存16.514655225919M
    1546:done当前内存16.515000465492M
    1547:done当前内存16.515151750248M

    15行代码未注释时,

    当前内存32.428451538086M
    1536:done当前内存32.787138468222M
    1537:done当前内存49.05961783143M
    1538:done当前内存65.331903239821M

  • 相关阅读:
    mysql优化
    c语言学习的第10天
    学习c语言的第9天
    学习c的第8天
    学习c的第7天
    学习c的第6天2
    c语言学习的第6天
    sed命令实战
    grep命令实战
    c语言学习的第五天
  • 原文地址:https://www.cnblogs.com/a-flydog/p/11942729.html
Copyright © 2011-2022 走看看