解决方案 »

  1.   

    http://www.phpthinking.com/archives/220
      

  2.   

    $fn = 'count.txt';
    if(! file_exists($fn)) file_put_contents($fn, 1);$fp = fopen($fn, 'r+');
    if(flock($fp, LOCK_EX | LOCK_NB)) {
      $n = fgets($fp);
      rewind($fp);
      fputs($fp, $n+1);
    }
    flock($fp, LOCK_UN);
      

  3.   

    失踪了几天,又来了?
    这段代码与你原来的效果是一样的,本以为至迟次日就有回应,没想到过了那么多天
    去掉 LOCK_NB 就可以了测试代码$mh = curl_multi_init();for($i=0; $i<1000; $i++) {
           $conn[$i]=curl_init("http://localhost/file_count.php?i=$i");
           curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
           curl_multi_add_handle ($mh,$conn[$i]);
    }do { $n=curl_multi_exec($mh,$active); } while ($active);foreach ($conn as $ch) {
           $res[] = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) . ' ' .curl_multi_getcontent($ch);
           curl_close($ch);
    }
    print_r($res);
      

  4.   

    file_count.php<?php
    $fn = 'count.txt';
    if(! file_exists($fn)) file_put_contents($fn, 1);
     
    $fp = fopen($fn, 'r+');
    if(flock($fp, LOCK_EX /*| LOCK_NB*/)) {
      $n = fgets($fp);
      rewind($fp);
      fputs($fp, $n+1);
    }
    flock($fp, LOCK_UN);
    echo microtime(1) . "  $n";
      

  5.   

    function chatbackcurl(){
        $url = "http://www.XXX.com/peter_linux.php";    for($i=0;$i<30;$i++) {
            $oplink[$i]['link'] = $url;
        }    $mh = curl_multi_init();    foreach($oplink as $key=>$info) {
            $conn[$key]=curl_init($info['link']);
            curl_setopt($conn[$key],CURLOPT_RETURNTRANSFER,1);
            curl_multi_add_handle ($mh,$conn[$key]);
        }
        $active = null;
        do {
            $mrc = curl_multi_exec($mh,$active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);    while ($active and $mrc == CURLM_OK) {
            if (curl_multi_select($mh) != -1) {
                do {
                    $mrc = curl_multi_exec($mh, $active);
                } while ($mrc == CURLM_CALL_MULTI_PERFORM);
            }
        }    foreach ($oplink as $key => $info) {
            $oplink[$key]['back_status']=curl_multi_getcontent($conn[$key]);
            curl_close($conn[$key]);
        }
        return $oplink ;
    }
    本人模拟的并发访问代码  如下