上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

sleep-sort.example.com

$numbers = array_map('intval', (array)$_GET['numbers']);

$mh = curl_multi_init(); 
foreach($numbers as $number){
    $ch_list[$number] = curl_init("http://sleep-sort-api.example.com/?number=".$number);
    curl_setopt($ch_list[$number], CURLOPT_TIMEOUT, $number+1);
    curl_multi_add_handle($mh, $ch_list[$number]);
}

$active = null;  
echo '<html><head><title>sleep sort</title></head><body><ol>';
do {
    curl_multi_exec($mh, $active);
    $ready=curl_multi_select($mh);
    if($ready){
        while($info=curl_multi_info_read($mh)){
            echo '<li>'.floor(curl_getinfo($info['handle'], CURLINFO_TOTAL_TIME)).'</li>';
        }
    }
} while ($active && $ready);
echo '</ol></body></html>';


sleep-sort-api.example.com

$number = intval($_GET['number']);
sleep($number);
echo $number;
exit;


こんな感じ?動作確認はしてない。間違ってもapi側を海の向こうに置いたりしてはいけない。多い日もnumberの数だけサーバを立ててスケールアウトすれば安心。ただしトラフィックでネットワークは死ぬ。或いは

function sleep_sort($numbers){
    $max = max($numbers);
    foreach($numbers as $number){
        $buckets[$number] = $number;
    }

    $start = time();
    for($i=1; $i<=$max; $i++){
        $now = time()-$start;
        if($buckets[$now]){
            $result[] = $now;
        }
    }
    return $result;
}


Genius sorting algorithm: Sleep sort

バケットソート

真っ当にpcntlを使う版 PHPでsleep sort

先駆者 凄いバカなプログラム
コメント
この記事へのコメント
承認待ちコメント
このコメントは管理者の承認待ちです
2012/05/12 (土) 05:15:48 | | #[ 編集]
承認待ちコメント
このコメントは管理者の承認待ちです
2012/11/25 (日) 18:06:40 | | #[ 編集]
承認待ちコメント
このコメントは管理者の承認待ちです
2014/07/29 (火) 21:38:13 | | #[ 編集]
承認待ちコメント
このコメントは管理者の承認待ちです
2014/08/06 (水) 09:32:31 | | #[ 編集]
承認待ちコメント
このコメントは管理者の承認待ちです
2014/08/17 (日) 07:10:02 | | #[ 編集]
承認待ちコメント
このコメントは管理者の承認待ちです
2014/08/23 (土) 08:29:30 | | #[ 編集]
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2005 The elephant vanishes all rights reserved.
Powered by FC2ブログ.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。