- 1 名前:nobodyさん mailto:sage [2012/01/02(月) 02:03:25.50 ID:???]
- 質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り 次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 113 kohada.2ch.net/test/read.cgi/php/1322564127/ ◆質問用テンプレ 【OS名】CentOS 【PHPのバージョン】5.3 【連携ソフトウェア】MySQL ImageMagick 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。 【その他諸注意】 ・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
- 541 名前:nobodyさん mailto:sage [2012/01/09(月) 06:25:12.84 ID:???]
- >>539
なぜそれをPHPスレで聞く?
- 542 名前:nobodyさん mailto:sage [2012/01/09(月) 10:50:51.24 ID:???]
- >>539
正確にいうとjavaでflashは作れる。 flexコンパイラはjavaだからwww
- 543 名前:nobodyさん mailto:sage [2012/01/09(月) 10:58:42.33 ID:???]
- この板の人たち、
一つの言語にこだわるひと多いね。 複数できればどうでもいいことにいつまでもグチグチ。 PHPの場合は「Web特化」だから たぶんそれだと先はないよ。
- 544 名前:nobodyさん mailto:sage [2012/01/09(月) 11:14:23.75 ID:???]
- >>538
Javaプラットフォームでインタプリタを使いたいなら、 以下から選んください。 Groovy ja.wikipedia.org/wiki/Groovy jRubyという選択肢もあり、 ja.wikipedia.org/wiki/JRuby Jythonという選択肢もあり、 ja.wikipedia.org/wiki/Jython Quercus(PHP)もある。 www.caucho.com/resin-3.0/quercus/
- 545 名前:nobodyさん mailto:sage [2012/01/09(月) 11:20:52.66 ID:???]
- いい加減スレ違いだと気付け
- 546 名前:nobodyさん mailto:sage [2012/01/09(月) 11:26:55.06 ID:???]
- スルーできない残念な人ばかり
- 547 名前:nobodyさん mailto:sage [2012/01/09(月) 11:34:19.45 ID:???]
- >>543
たかがひとつの言語如きに先など無くてもいいのに、 無いと困るだろって思うのを、言語にこだわるというんだよ。
- 548 名前:nobodyさん mailto:sage [2012/01/09(月) 12:06:17.06 ID:???]
- ドヤ顔でwikipediaのせちゃって低学歴だとバレたねw
- 549 名前:nobodyさん mailto:sage [2012/01/09(月) 12:06:54.27 ID:???]
- 多分高卒か専門卒の子なんだろうなぁ
- 550 名前:nobodyさん mailto:sage [2012/01/09(月) 12:07:28.35 ID:???]
- >>547
Web特化だから他にはできないでしょ?そういう意味。
- 551 名前:nobodyさん [2012/01/09(月) 12:19:05.77 ID:bsExuDph]
- 配列やchrを使わずにforで回してaからzまでアルファベットを生成できる方法を教えてください
たしか↓みたいな書き方で出来た覚えがあるんですが書き方忘れました for ($i='a'; $i<'z'; $i++) echo $a;
- 552 名前:nobodyさん [2012/01/09(月) 12:19:47.72 ID:bsExuDph]
- 自己解決
変数名がおかしくて動かなかっただけだった
- 553 名前:nobodyさん mailto:sage [2012/01/09(月) 12:57:43.10 ID:???]
- >>539
>>542 おもろい。
- 554 名前:nobodyさん [2012/01/09(月) 14:27:21.52 ID:7f0AwpQn]
- 安藤優子、木村太郎は、某プロパイダの社外取締役、かつ、安藤は、フジ社外の人間にもかかわらず、フジテレビジョンのM&Aの最中、フジのホワイトナ
イトの【親会社】の本業を無視して、「インターネットは虚業だ。具体性がない 。」というようなことをコメントしました。この虚業は、livedoorを指していた としても、「同業者」であったということは、非常に、違和感を感じずには、い られません。
- 555 名前:nobodyさん mailto:sage [2012/01/09(月) 17:05:12.94 ID:???]
- さぁ冬休みも今日でおしまいですよ
- 556 名前:nobodyさん [2012/01/09(月) 18:22:21.45 ID:IGqUpTKq]
- exitとdieって同じ働きってphpマニュアルに載ってました、
みささんはどっちを使ってますか?
- 557 名前:nobodyさん mailto:sage [2012/01/09(月) 18:23:58.57 ID:???]
- dieはexitのエイリアス
joinがimplodeのエイリアスみたいなもん どちらかといえばオリジナル使え
- 558 名前:美佐 mailto:sage [2012/01/09(月) 18:24:11.49 ID:???]
- あたしはexit派よ
- 559 名前:nobodyさん mailto:sage [2012/01/09(月) 18:31:34.53 ID:???]
- >>476
2chのは、疑わしきは通さずで、公開proxyじゃなくても通さなかった。
- 560 名前:nobodyさん mailto:sage [2012/01/09(月) 18:33:25.70 ID:???]
- 無知は怖い。
- 561 名前:nobodyさん mailto:sage [2012/01/09(月) 19:41:08.39 ID:???]
- >>559
そうだったとしても、2chのチェッカー通せば多くの広告やスパムをはじけて良いと思う。
- 562 名前:nobodyさん mailto:sage [2012/01/10(火) 00:05:10.49 ID:???]
- アプリケーションサーバーはどんなもの使ってらっしゃいますか?
- 563 名前:nobodyさん mailto:sage [2012/01/10(火) 00:06:30.20 ID:???]
- >>1嫁
- 564 名前:nobodyさん [2012/01/10(火) 00:35:57.99 ID:OfX0eCZx]
- sshってphpは関係あるのですか?
- 565 名前:nobodyさん mailto:sage [2012/01/10(火) 00:37:38.41 ID:???]
- 関係ありません
- 566 名前:562 mailto:sage [2012/01/10(火) 02:01:24.77 ID:???]
- >>563
【OS名】CentOS 5.6 【PHPのバージョン】5.3.8 【連携ソフトウェア】 Apache Http Server 2.2 MySQL Community Server 5.5.19
- 567 名前:nobodyさん mailto:sage [2012/01/10(火) 02:25:09.67 ID:???]
- >>1嫁
- 568 名前:562 [2012/01/10(火) 03:15:44.30 ID:5jaiW7yr]
- >>567
>>562
- 569 名前:nobodyさん mailto:sage [2012/01/10(火) 03:20:22.76 ID:???]
- ◆質問する時の注意
・ 質問者として、態度をわきまえること。
- 570 名前:562 [2012/01/10(火) 03:22:55.62 ID:5jaiW7yr]
- >>569
大変失礼いたしました。 教えて下さいませんか?
- 571 名前:nobodyさん mailto:sage [2012/01/10(火) 03:26:33.03 ID:???]
- PHPにアプリケーションサーバは不要ですし使ってないですよ
- 572 名前:562 [2012/01/10(火) 03:27:09.50 ID:5jaiW7yr]
- >>571
なぜ不要ですか?
- 573 名前:nobodyさん mailto:sage [2012/01/10(火) 03:29:52.42 ID:???]
- Apacheにモジュールとして組み込まれてますので
- 574 名前:nobodyさん [2012/01/10(火) 03:31:45.86 ID:5jaiW7yr]
- zendのところ存在意義は何でしょうか?
- 575 名前:nobodyさん mailto:sage [2012/01/10(火) 06:40:02.10 ID:???]
- >>535
Cのインタプリタって割と最近どっかのスレで見たと思う。
- 576 名前:nobodyさん mailto:sage [2012/01/10(火) 06:46:36.93 ID:???]
- >>574
Windowsに対するMicrosoftの存在意義を問うているの?
- 577 名前:nobodyさん [2012/01/10(火) 09:12:23.38 ID:5jaiW7yr]
- >>576
すいません。 >>574はZend Serverを意味してました。
- 578 名前:nobodyさん mailto:sage [2012/01/10(火) 11:48:47.01 ID:???]
- ニートのオッサン何やってんだ。
相変わらず支離滅裂な事言っちゃって。 家に引きこもってないで早く病院行けよ。
- 579 名前:nobodyさん mailto:sage [2012/01/10(火) 15:33:30.34 ID:???]
- Zendのサーバー、誰か使っている人はいませんか?
- 580 名前:nobodyさん mailto:sage [2012/01/10(火) 16:01:26.75 ID:???]
- >>577
まとまってるところじゃないかな。あとはもしかするとGUI >>579 別の人? その質問でどうしたいのか
- 581 名前:349 mailto:sage [2012/01/10(火) 16:06:05.01 ID:???]
- >>349 です。
非同期ページ、PHPから取得することができました。 並列ダウンロードしながらそれぞれにプログレスバーなんかつけてみたりして完璧です。 ググっても全然出てこない情報なので結構必要とする人が多い解決方法になったと思いますが ここに書くとまた反応されそうなんでお礼だけ。ありがとうございました。
- 582 名前:nobodyさん mailto:sage [2012/01/10(火) 16:14:23.40 ID:???]
- >>581
ああ、おつかれさん。 スルースキルと、感情的になりすぎるのに気をつけるといいと思うよ。
- 583 名前:nobodyさん [2012/01/10(火) 16:21:07.06 ID:HU7fZVh4]
- フォームにてページ間を移動しようとしてsessionを使用しようと思いました
まず例えばpage1にて$_SESSION['aaa'} = $_POST['aaa']のようにしました 次に、page2へ行く場合に $_SESSION['aaa']を保持したままで$aaa = $_SESSION['aaa']とするのがいいのか、 それとも、page1からpage2へ送る際に、<input type="hidden" name="aaa" value="$_SESSION['aaa']"/>のように いったんフォーム内に値を入れてからpage2のスクリプト内でまた$aaa = $_POST['aaa']のようにした方がいいのでしょうか? やってることは同じだとは思うのですが、例えばフォーム移行中にエラーが出たり、ブラウザの戻るなどにて意図しない 挙動をされた際に最初の方法だと問題が発生するかなとも思ったもので すみませんがアドバイス頂けないでしょうか?
- 584 名前:nobodyさん mailto:sage [2012/01/10(火) 16:23:21.05 ID:???]
- フォームに値を入れるんなら、セッション使う意味がないじゃない。
- 585 名前:nobodyさん mailto:sage [2012/01/10(火) 16:33:08.57 ID:???]
- 何がやりたのかさっぱりわからん
page1 <-> page2 でフォームの値を維持したまま行き来したいってこと? まずブラウザのバックボタンでは「有効期限切れ」ってのが発生する これの解決方法はややこしいので説明しない で、ページ内に戻るボタンを設置して行き来させるならそのまま$_POSTを引き回せばいい 前のページの値はhiddenに入れておいてもいいしsessionが良ければsession使ってもいい session使った場合に$_POSTと同期させる方法は代入なりなんなり好きなようにやればいい
- 586 名前:nobodyさん mailto:sage [2012/01/10(火) 19:10:58.95 ID:???]
- もうこのスレでお世話にならなくても解決できる力が身に付きました
これも皆様のア辛口による熱血指導の賜物です 卒業式は3月にやりますのでよろしくお願いします
- 587 名前:リボンちゃん [2012/01/10(火) 19:45:37.78 ID:cS2s7PkD]
- phpについて、困っています。
掲示板等で、$dateを使って日付を表示させているのですが、 特殊な事情があって、過去14日よりも前のものだった場合、 表示は10日前で表示したいのです。 簡単な記述方法があれば、教えていただけると助かります。 よろしくお願いします m(_ _)m 例:1月1日投稿されたもの→5日に閲覧した場合は、そのまま投稿日時は1月1日。20日に閲覧すると投稿日時は1月10日で表示される。
- 588 名前:nobodyさん mailto:sage [2012/01/10(火) 20:01:42.81 ID:???]
- >>587
$date = 書き込んだ日; $date = mktime($date); $now = time(); $date = $now - $date > 60*60*24*10 ? 10 : $date;
- 589 名前:nobodyさん mailto:sage [2012/01/10(火) 20:02:28.76 ID:???]
- あ、ごめん、最後の行読んでなかった
- 590 名前:nobodyさん mailto:sage [2012/01/10(火) 20:03:08.26 ID:???]
- >>587
$dateってただの変数じゃん これでどうかな <?php $posted_str = "2011/12/26"; //投稿日 $posted = strtotime($posted_str); $now = time(); $date_format = "Y/m/d"; $posted_disp = $posted<($now-(60*60*24*15)) ? ($now-(60*60*24*10)) : $posted; print "今日:".date($date_format)."<br /> 元投稿日:".date($date_format,$posted)."<br /> 表示投稿日:".date($date_format,$posted_disp);
- 591 名前:nobodyさん mailto:sage [2012/01/10(火) 20:03:29.35 ID:???]
- あ、ごめん、よく読み直したら全然ちがったw
- 592 名前:590 mailto:sage [2012/01/10(火) 20:14:05.38 ID:???]
- >>588,589591 は違う人
- 593 名前:nobodyさん mailto:sage [2012/01/10(火) 20:28:04.95 ID:???]
- 回答も含めて色々ひどいな
$post_date // これを投稿日時だとする(UNIXTIME) $limit = 60 * 60 * 24 * 14; // 期限14日前とする if($_SERVER['REQUEST_TIME'] - $post_date > $limit) { $post_date -= 60 * 60 * 24 * 10; } echo date('Y-m-d', $post_date);
- 594 名前:587 mailto:sage [2012/01/10(火) 21:08:57.11 ID:???]
- 皆さん、レスありがとうございます!
すごい助かります! 60 * 60 * 24 * 10 の10は10日前という数字だとわかりますが、 他の数字60,60,24 の意味を教えていただけると勉強になります。 よろしくお願いしますm(_ _)m
- 595 名前:nobodyさん mailto:sage [2012/01/10(火) 21:16:12.68 ID:???]
- 60 * 60 * 24 = 1日
1秒をかけてる
- 596 名前:nobodyさん mailto:sage [2012/01/10(火) 21:17:14.75 ID:???]
- >>593
$_SERVERは使うな!!!!!!!!!!!!!!! getenvを使えっ!!!!!!!!!!!!!!!!!!!!
- 597 名前:nobodyさん mailto:sage [2012/01/10(火) 21:17:39.58 ID:???]
- 60秒 * 60分 * 24時間 = 1日
- 598 名前:nobodyさん mailto:sage [2012/01/10(火) 21:28:09.69 ID:???]
- >>596
公開するプログラムでもあるまいに、 自分の環境チェックもしないやつになっちまうだろ。
- 599 名前:nobodyさん [2012/01/10(火) 21:34:28.20 ID:HU7fZVh4]
- データベースをPDOにてプレースホルダを利用し、変更したいのですが、質問させてください
カラム名がaaa、bbb、cccとして、 その内の一つ、または複数の値を変更するような場合にはどのように記述すればいいのでしょうか? マニュアルなどを見ると、VALUESのようにデータベースに与える値をプレースホルダに割り当てるのは分かるのですが、 自分は値だけでなく、カラム名にも変数を割り当てたいのです prepare('UPDATE table SET $name = :name WHERE $url = :url')のような型です まさかprepare('UPDATE table SET :name1 = :name2 WHERE :url1 = :url2')のような型にはできないでしょうし この場合、どのように記述すればいいのでしょうか?
- 600 名前:nobodyさん mailto:sage [2012/01/10(火) 21:34:55.57 ID:???]
- >>596
は?その根拠は? おまえENVの意味もわかってないだろどうせ
- 601 名前:nobodyさん mailto:sage [2012/01/10(火) 21:37:15.54 ID:???]
- >>599
SQLごとに作れ
- 602 名前:nobodyさん mailto:sage [2012/01/10(火) 21:39:00.09 ID:???]
- >>599
普通に UPDATE table SET col1=? WHERE col2=? でいいんじゃねーの カラム名に変数割り当てるなら上を "UPDATE table SET {$col1}=? WHERE {$col2}=?" すりゃいいじゃん
- 603 名前:587 mailto:sage [2012/01/10(火) 22:25:58.95 ID:???]
- みなさんレスありがとうございます。
とても助かります! とりあえず593の$post_dateを$dateに変えて記述してみたのですが、 $limit = 60 * 60 * 24 * 14; // 期限14日前とする の行でエラーが出てしまいます。 最終的に表示させたい場所に echo date('Y-m-d', $post_date); を書けばいいという認識であっていますか?? 初歩的すぎて、すいませんが、よろしくお願いします。
- 604 名前:nobodyさん mailto:sage [2012/01/10(火) 22:33:03.94 ID:???]
- >>603
その行でいきなりエラーはないだろw 投稿日時はどうやって受け取って、どういう形式で保存してんの? 例)2012/01/10、とか、2012-01-10、とか、1326121200、とか。
- 605 名前:nobodyさん mailto:sage [2012/01/10(火) 22:33:49.35 ID:???]
- >$limit = 60 * 60 * 24 * 14; // 期限14日前とする
>の行でエラーが出てしまいます。 んなアホな 違うところだろ >最終的に表示させたい場所に >echo date('Y-m-d', $post_date); しらんがな どんなソースになってるのかもわからんし
- 606 名前:nobodyさん mailto:sage [2012/01/10(火) 22:40:12.89 ID:???]
- >>600
ggrks
- 607 名前:nobodyさん mailto:sage [2012/01/10(火) 22:42:27.44 ID:???]
- >>603
$dateの中身を書きなさい
- 608 名前:nobodyさん mailto:sage [2012/01/10(火) 22:49:22.50 ID:???]
- 素人相手に偉そうに語るのがこのスレです。
- 609 名前:nobodyさん [2012/01/10(火) 22:49:50.87 ID:DbdGI1rD]
- 【OS名】CentOS 5.5
【PHPのバージョン】5.2.17 【連携ソフトウェア】MySQL GD 【質問内容】 GDの機能を使って画像を作成して、データベースに入れていくのですが、 imagepng()とかで画像をファイルに保存したり、ブラウザに出したりしますよね? これの出力結果を直接文字列として変数に格納したいのですが、どうすればよいでしょうか? $data = imagepng()とかも試してみましたが、trueしか返ってきませんでした。
- 610 名前:587 mailto:sage [2012/01/10(火) 22:52:45.04 ID:???]
- ありがとうございます。
すいません、違うところのエラーですか。(^^; メールで投稿する形式の掲示板で、メールサーバーに 投稿記事を取りに行くphpには、以下のように記載されています。 ※日付は1323413498等という形で保存されています。 // 日付の袖しつ eregi("Date:[ \t]*([^\r\n]+)", $head, $datereg); $now = strtotime($datereg[1]); if ($now == -1) $now = time(); 呼び出すphpの冒頭にはには $date = date("y/m/d", $ptime); とだけ書かれています。 最終的には、$dateと書いたところに日時が表示されています。
- 611 名前:nobodyさん [2012/01/10(火) 22:54:19.13 ID:DbdGI1rD]
- 自己れす。下記で行けそうです。
ob_start(); imagepng($resource); $data = ob_get_contents(); ob_end_clean();
- 612 名前:nobodyさん mailto:sage [2012/01/10(火) 22:56:28.46 ID:???]
- >>609
ヒント:base64_encode >>610 もうここで聞く以前の学習を >$date = date("y/m/d", $ptime); $ptimeには何が入ってるの?すでにUNIXTIMEが入ってるなら $date = $ptime; でいいよ、代入する意味ないけど
- 613 名前:nobodyさん mailto:sage [2012/01/11(水) 00:11:45.44 ID:???]
- >>610
dateとstrtotimeは使うな datetimeを使え
- 614 名前:nobodyさん mailto:sage [2012/01/11(水) 00:23:58.10 ID:???]
- ついに使うな厨も登場したか
- 615 名前:nobodyさん [2012/01/11(水) 00:26:28.08 ID:dfPHpXiU]
- phpにおける分散オブジェクトについて語りましょう!
- 616 名前:nobodyさん mailto:sage [2012/01/11(水) 00:29:05.90 ID:???]
- >>615
kohada.2ch.net/test/read.cgi/php/1131016915/
- 617 名前:nobodyさん [2012/01/11(水) 00:35:11.26 ID:dfPHpXiU]
- さあ、分散オブジェクトについて語りましょう!
- 618 名前:nobodyさん [2012/01/11(水) 00:37:35.15 ID:dfPHpXiU]
- >>616
PHPの分散オブジェクト技術にはどのようなものがありますか?
- 619 名前:nobodyさん mailto:sage [2012/01/11(水) 00:41:39.74 ID:???]
- 荒らし認定
- 620 名前:nobodyさん [2012/01/11(水) 12:55:49.06 ID:eyRErrPB]
- aaa.example.comとbbb.example.comで同じセッションを使いたいのですが、
php.iniで session.cookie_domain = ".example.com" を指定してもうまくいきません。 また、.phpの中で直接設定しようと以下のようにテストしたんですがやはりうまくいきません (aaaとbbbを変更するとセッション値がカラになる) //session_set.php ini_set("session.cookie_domain", ".example.com"); session_start(); $_SESSION['animal'] = "cat"; echo "animal>>>"; echo $_SESSION['animal']; //session_check.php この.phpをaaa.example.comとbbb.example.comで確認する ini_set("session.cookie_domain", ".example.com"); session_start(); echo "animal>>>"; echo $_SESSION['animal']; 何が原因でしょうか? php.iniで他に何か設定しなきゃいけないのでしょうか。 ご意見よろしくお願いします
- 621 名前:nobodyさん mailto:sage [2012/01/11(水) 13:00:09.61 ID:???]
- >>620
ドメインが違うんだから無理。 それでセッション引き回しできたら、ハッキングやりほうだい
- 622 名前:nobodyさん mailto:sage [2012/01/11(水) 13:15:03.58 ID:???]
- >無いが原因でしょうか?
マニュアルを読まないのが原因です
- 623 名前:nobodyさん [2012/01/11(水) 13:27:59.44 ID:eyRErrPB]
- >>621
ありがとうございます php.net/manual/ja/function.session-set-cookie-params.php を見てるんですが、 「すべてのサブドメインでクッキーを有効にしたい場合は、先頭にドットをつけて '.php.net' のようにします。」 とあるようにサブドメインの変更までなら対応できるのではないですか?
- 624 名前:nobodyさん mailto:sage [2012/01/11(水) 13:30:15.06 ID:???]
- d.hatena.ne.jp/n314/20100512/1273658459
- 625 名前:nobodyさん mailto:sage [2012/01/11(水) 13:36:51.45 ID:???]
- >>624
そのブログの設定ファイルがphp.iniより優先するということでしょうか 実はちょうど今session_set_cookie_params();で対応できたんですが そちらの勉強もしてみます ありがとうございました
- 626 名前:nobodyさん mailto:sage [2012/01/11(水) 13:44:43.70 ID:???]
- >>621
へぇ
- 627 名前:nobodyさん [2012/01/11(水) 14:07:42.61 ID:VbJoExbW]
- 質問させてください
皆さんはPHPにて「並行処理」をしたい場合、どのようにされていますでしょうか? 自分がやりたいのは、あるスクリプトがあり、それを引数(設定値)だけを変えて 決められた時間の間隔にて(sleep()等を使って)繰り返し、大量に(少なくとも20位)かつ”同時に”実行したいと思っております 子プロセスの同期は必要ないと思います ファイルをコピーして、各スクリプト毎に設定値を書いて・・・って言うのは現実的ではないので データベースなどからリストを取得して、その設定値を使ってそれぞれを同時に実行したいと思っております (fwrite()などで、設定毎にスクリプトを作成していこうかとも考えましたが・・・) しかし色々考えたのですが、全然いいアイデアが浮かんできません このような場合、どのようにすればいいのでしょうか?
- 628 名前:nobodyさん [2012/01/11(水) 14:08:07.06 ID:VbJoExbW]
- pcntl_fork()という関数があるという事は知ったのですが、これを使った場合もどのように実装すればいいのかいまいち分かりません
$list = array(~DBからの設定値~); $pid = pcntl_fork(); if ($pid == -1) { die('ダメ'); } else if ($pid) { pcntl_wait($status); } else { //子プロセス foreach(~$list~)とかイテレータ{ system()とか } } 上記のようにforeach()で回してしまうと、設定値を読み込んだ順に実行されていくので 普通のイテレータ使ったスクリプトと同じで、並列処理にはならないように思います それともforeach()をif()の外で回して配列に格納しておいて、$iという数字をインクリメント した後に子プロセス内にてfor()にて一気にsystem($list[$i])等で実行すればいいのでしょうか? >>627のような実装をしたい場合に何かアドバイスを頂けないでしょうか?
- 629 名前:nobodyさん mailto:sage [2012/01/11(水) 14:20:29.14 ID:???]
- 並列させたい分だけforkすりゃいいだろ
- 630 名前:nobodyさん mailto:sage [2012/01/11(水) 15:00:30.88 ID:???]
-
foreach ( $list ... ) { if ( ($pid = pcntl_fork()) === 0 ) { 子でやりたいこと exit(0);//終わる } else if ($pid == -1) die("x"); } //親での処理(終わるの待つとか)
- 631 名前:nobodyさん mailto:sage [2012/01/11(水) 15:07:26.35 ID:???]
- >>627
並列処理したい処理をもうちっと具体的にくれ
- 632 名前:nobodyさん [2012/01/11(水) 15:25:25.54 ID:VbJoExbW]
- 皆さん、返答ありがとうございます
自分のやりたい事とは少し違いますが、説明が簡単な例としては、Googleのクローラなんかがあると思います データをどういう手法か分かりませんが、初期のものでも1サーバに300ものクローラを使っていたとの事です クローラは動き回っているので考え方が違うかもしれませんが、例えば自社や関連会社のデータなど固定されたターゲットの場合はcronなどで定期的に訪問出来るでしょうが、 それらの設定値をいちいちファイルに記述するのも大変なので、それぞれの場所にてデータを取得するためのxPathなど設定値リストを読み込んで、 スクリプトにて一気に並行処理にて自動的に行う、という事をやりたいと考えております ただ、アクセスし続けるのも相手側に付加がかかるので、各スクリプトの訪問間隔を大きい相手は5分、小さい相手は1時間などにしたいと考えております また、それらのデータを正常に取得したら、その瞬間に今度はそのデータを解析・整形するようなスクリプトを起動させたいと考えております 以上の点にて宜しくお願いいたします
- 633 名前:nobodyさん mailto:sage [2012/01/11(水) 16:03:46.74 ID:???]
- いまいち何をやりたいかわからんが
取得先が大量にあって直列処理だと時間がかかりすぎるしそれぞれ取得設定を書くのもめんどいから 並列にしたいってことでおk? ならcURLのマルチ使って、設定値をdbなどから引っ張ってきてから 回しながらcallbackなんかをうまく設定して一気にゴー、で行けるんじゃないか。 やりたいことと違っていたならすまん。 参照:ttp://techblog.ecstudio.jp/tech-tips/php-multi.html
- 634 名前:nobodyさん mailto:sage [2012/01/11(水) 16:19:22.57 ID:???]
- >>632
Webのクローラーはデータ取得に暇がかかるのが明白だから並列処理するのが当たり前のアプローチ
- 635 名前:nobodyさん mailto:sage [2012/01/11(水) 16:46:00.24 ID:???]
- あえてクローラーをPHPで作ることもないだろ。
PHPは標準で並列処理できない仕様だ。 並列処理できる言語、並列処理できるソフトを使って保存してから PHPでそこにアクセスしたら良い。
- 636 名前:nobodyさん mailto:sage [2012/01/11(水) 16:58:01.39 ID:???]
- しかしcurlだけは標準でダウンロードが完了してなくても処理が帰ってくるから擬似的には並列処理できるな。
通信だけは並列にできるいうことだが。クローラーはパフォーマンスを落とさずに、並列処理可能な言語・ツールに並べる可能性はある。
- 637 名前:nobodyさん mailto:sage [2012/01/11(水) 17:09:13.29 ID:???]
- ここで適切なアドバイスしても、馬鹿には無理だろ。
- 638 名前:nobodyさん mailto:sage [2012/01/11(水) 17:40:57.15 ID:???]
- 返事なくなっちゃったね。
- 639 名前:nobodyさん mailto:sage [2012/01/11(水) 17:43:06.65 ID:???]
- engawa.2ch.net/test/read.cgi/linux/1324631185/427
のコンパイルは結局うまくいったのか?
- 640 名前:nobodyさん mailto:sage [2012/01/11(水) 18:11:13.28 ID:???]
- >>630 じゃだめなん?
- 641 名前:nobodyさん mailto:sage [2012/01/11(水) 18:17:50.79 ID:???]
- よくわからないから無視したんだろw
|

|