のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,898人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレ【PHP】下らねぇ質問はID出して書き込みやがれ 114

    php覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    652 = :

    固定長なら200バイトだけで済むだろ。

    653 = :

    >>649はちょっと読み間違いをしているね。
    > 「499行目と500行目」
    > 「1行目と2行目」
    この二つの負荷には大差がないといっているんだろう。

    本来の質問であるところの、
    > 1~500行の文字を取り出すとき
    との負荷には大きな差があるよ。

    固定長じゃない場合は、最後の2行を得るのが少し面倒だけど。

    655 = :

    実験してみればいいじゃん

    656 = :

    500Kくらいたいした事で無い。
    fileで全行読み込んでも良いよ。
    そこがボトルネックになってから改良したら良い。

    657 = :

    全ての箇所で低リソースを目指していたら手間が掛かって進まない。
    一応動くやつを作ってから速度測定して、
    全体の中で時間掛かっているところに手を加えれば良い。

    659 = :

    理解不可能ですが。
    全て(1~500行)のロードと2行のみでは負荷は違う。
    可変長だったらindexをファイルの後方か先頭に配置して必要なところを読めば速いです。

    660 = :

    ファイルサイズがでかくて全読込をさけたいなら、データベースにいれとけよ。
    そしたらメモリ管理など気にしなくて済むしキャッシュなども自動で使ってくれる

    664 = :

    >>662
    なぜPHPを使っているのですか?

    665 :

    やっぱりphpでは並列無理ぽ。

    666 = :

    ニートおっさんには無理

    667 = :

    >>662
    そのコードでできたよ。

    child: 0
    parent: 0
    child: 1
    parent: 1
    child: 2
    parent: 2
    (略)
    child: 8
    parent: 8
    child: 9
    parent: 9
    wait begin.
    wait end.

    668 = :

    >>667
    できてない。

    669 = :

    並列と分散はPHPの泣きどころ。

    670 = :

    かろうじて並列できても実用性は全くないことに気づけよ

    671 = :

    同じやつが同じ話題を繰り返してるんだな

    672 = :

    >>668
    どういうこと?

    673 = :

    >>663
    これって実行には何秒かかったんだろ。

    674 = :

    >>664 >>665 >>668 >>669 >>670 は並列処理を理解できてない馬鹿。

    675 = :

    >>667
    >>663
    実行環境(カーネル)の違いでプロセスの優先度が変わるのかな?

    676 = :

    PHPにはpcntl_forkというプロセスをフォーク(複製)することが
    できる関数がありますが、これはPHPをCGIモードで
    動かしている場合にのみ有効です。
    通常はPHPをApacheモジュールとして動作させていることが
    多いので、これが使えないケースが多々あります。
    http://techblog.ecstudio.jp/tech-tips/php-multi.html

    677 = :

    っていうか、何でPHPで作ることにこだわってんだ?
    Perlで良いじゃん。

    678 = :

    >>676
    pcntl_fork関数は存在するし、forkも成功したように見えるけど、並列処理されないなんて結果になるということですか

    679 = :

    ちなみに俺も>>662やってみた
    俺は並列処理の事なんか分かっていないので、このやり方で合っているか分からないけれど
    <?phpの後に、$time = time();
    最終行に、echo 'time:' . (time() - $time) . 'sec' . PHP_EOL;を付けてみた

    2chの改行規制で出力形式変えるけど結果は
    child: 0 child: 1 child: 2
    child: 3 child: 4 child: 5
    child: 6 child: 7 child: 8
    child: 9
    time:10sec
    parent: 0 parent: 1 parent: 2
    parent: 3 parent: 4 parent: 5
    parent: 6 parent: 7 parent: 8
    parent: 9
    wait begin.
    wait end.
    time:10sec
    となった

    >>676
    http://www.php.net/manual/ja/pcntl.installation.php
    にはCLI版も可能って書いてるんじゃないの?

    >>675
    ちなみに自分はcentOSです

    680 :

    phpとmysqlでカウンターが作りたいのですが
    書き込むときの排他制御はどのようにやるのでしょうか?

    682 = :

    もういい加減ニートのおっさんは飽きた

    683 = :

    書き忘れたけど、この出力結果みると並列処理ってされてない・・・んだよね?

    684 = :

    基本的にはマルチスレッドはサポートされてないだろ。
    レンタルサーバーとかでは。
    自宅で一人で使う目的だったらマルチスレッドをONにしてコンパイルすればいい。
    しかしソースコードに汎用性が無くなる。
    Curlをつかっとけ。5.3か5.2から標準で並列に使える。

    686 = :

    PHPがサポートするプロセス制御機能は、デフォルトでは有効となってい ません。
    プロセス制御機能を有効にするには、 configure のオプションに --enable-pcntl を付け、
    CGI 版あるいは CLI 版の PHP をコンパイルする必要があります。
    注意: 現在、このモジュールは非 Unix 環境(Windows)では動作しません。
    http://www.php.net/manual/ja/pcntl.installation.php

    687 = :

    >>686
    何が言いたいの。

    689 = :

    実行結果は
    c1: 0 c1: 1 c1: 2 c1: 3 c1: 4 c1: 5 c1: 6 c1: 7 c1: 8 c1: 9
    c1-time:10sec
    c2: 0 c2: 1 c2: 2 c2: 3 c2: 4 c2: 5 c2: 6 c2: 7 c2: 8 c2: 9
    c2-time:10sec
    p-time:20sec
    parent: 0 parent: 1 parent: 2 parent: 3 parent: 4 parent: 5 parent: 6 parent: 7 parent: 8 parent: 9
    wait begin. wait end.
    p-time:20sec
    となった
    で、実際の時計を見ていたら、20秒後に表示された

    system('php forkc3.php');
    も加えたら実際の時計では30秒後に表示された
    これってどういうこと?
    並列処理されていないってことだよね?

    690 = :

    なんでそんなトンチンカンなことが平気で言えるのか
    system('php forkc1.php');
    system('php forkc2.php');

    この時点で気付けよ

    691 = :

    ん?
    30秒かかるのは当たり前か・・・笑
    >>679は10秒で済んでるから親プロセスと子プロセスはちゃんと並列処理されてるってことだね
    自分の>>688の書き方が悪いだけか

    この流れの話は、親プロセスから子プロセスを複数作成し、それを同時に実行
    つまり3つの子プロセスがあれば4つとも10秒後に終わらせるということだよね?
    となると実装法が思いつかないけど、pcntl_fork()っていうのを3回呼び出せばいいってことじゃないかな?

    分からん

    692 = :

    >>690
    ごめん、投稿した後すぐに気がついた(苦笑

    693 = :

    >>686
    >>678

    694 = :

    >>691
    system('php forkc1.php &');
    と、バックグラウンドプロセスにすればよろしい。
    プロセスの終了待ち処理を入れる必要があるけど。

    695 = :

    >>694
    なるほど
    実はまだ挑戦してて(笑
    一度やり始めたら意地でもとなってしまってw

    $pid[$i] = pcntl_fork();等と複数回呼び出して、
    その後system()を呼び出すとかやってみたのですが30秒かかったりで

    バックグラウンドプロセスという発想はなかったです
    今から外に出ないといけないんですが、最後にちょっと試してみます

    696 = :

    >>694
    アハハ、今>>688のコードにて
    if ($pid == 0) {
    system('php forkc1.php &');
    system('php forkc2.php &');
    system('php forkc3.php &');
    }
    としましたが
    今度は31秒かかってしまいましたw
    どこがおかしいのか分かりませんが、また帰ってからやってみます

    697 = :

    時間のムダ。

    698 = :

    pcntl_fork()の話してんのになんでsystem()になってんの。

    699 = :

    アホですから

    700 = :

    >>696
    アハハ、なんで標準出力捨てないの


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について