• 締切済み

FastCGI ーPHPで、同時アクセスができない

環境、nginx Ver1.52, php Ver5.4.17, OS Windows7、ブラウザ:FireFox nginx の場合、phpはFastCGIで動作します。 同じ内容の 1.php 2.php, それぞれ表示します。 ーーー <?php echo date('h:i:s A -> ... -> '); sleep(5); echo date('h:i:s A '); ?> ーーー 1.php 08:12:21 AM -> ... -> 08:12:26 AM 2.php 08:12:26 AM -> ... -> 08:12:31 AM 結果は上記のとおり、必ず1.phpが終了してから、2.phpが実行されます。 nginx の conf php.ini は doc_root ぐらいしか変えていません。 デフォルトのままです。 lightHttpd + PHP (FastCGI) でも同じ結果です。 lightHttpd + PHP (CGI) だったら、同時に実行できます。 これはWindows版のFastCGIのPHPのバグでしょうか。 それとも、どこかに設定があるのでしょうか。 よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

Linuxだと、php-fpmや、spawn-fastcgiなどを使ってプロセス管理をするようですが、Windowsではそれらがありません。 ので、できない、が結論ではないかと思います。 どちらにせよ、Windows7で構築されているということで、ローカルの開発環境という意味で使われているのかと思います。 それであれば、Apacheや、統合環境的なXAMPPで良いのではないでしょうか。 どうしても、nginxを使いたいということであれば、VMPlayer等で、Linux環境を構築してそこで環境を作ってはいかがでしょう。

関連するQ&A

  • PHP入りのHTMLファイルの属性について

    PHPを使えるレンタルサーバーを試しているのですが、PHPを内包しているHTMLをアップして動作させようとすると、そのファイルに実行権がないとき「Internal Server Error」となってしまいます。 以前に使っていたレンタルサーバーでは実行権なんか必要なかった筈です。 全てのPHPに実行権をつければ済む話ではありますが、数が多いと面倒です。 実行権なしに動作させる方法はありませんか? php.ini や .htaccess の設定でなんとかなりませんでしょうか? 例えばこのファイル--------------------------- <html> <head> <META http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head> <body> <script language="php"> echo date('Y/m/d H:i:s'); echo "<BR>"; </script> </body> </html> ここまで---------------------------

    • ベストアンサー
    • PHP
  • PHPエラーについて

    PHPで修正をしたら下記のエラーがでました。 Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/home/g105427/html/test/blog_special.php on line 199 ble border="0" cellpadding="3" cellspacing="0"> <?php $i = 0; do { $i = $i + 1; ?> <tr> <td><IMG src="image/list.gif" width="13" height="13" border="0"><font color="#FF8000"><a href="blog_02.php?id=<?php echo $row_rs_blog_02['id']; ?>"> <?php echo mb_substr($row_rs_blog_02['title'],0,50); ?> <?php if (mb_strlen($row_rs_blog_02['title']) >= '50') { echo('…'); } ?> </a> <?php echo "("; echo substr($row_rs_blog_02['date'], 4,2); echo "/"; echo substr($row_rs_blog_02['date'], 6,2); echo ")"; ?></font></td> </tr> <?php } while ($row_rs_blog_02 = mysql_fetch_assoc($rs_blog_02) and $i < 2); ?> </table> <BR> <BR> ちなみに199行目は ?php } while ($row_rs_blog_02 = mysql_fetch_assoc($rs_blog_02) and $i < 2); ?> になっています。 教えてください。 説明が悪くてすいません。

    • ベストアンサー
    • PHP
  • [PHP]php.iniが読み込まれない

    php.iniを変更しても反映されません。 読み込んでいるファイルが違うのかとも思い、php.iniを削除してコマンドを実行すると以下のようになりました。 ■php -i | grep php.ini [結果] Configuration File (php.ini) Path => /etc しかし、phpinfo();で表示した場合、以下のように削除前の情報を保持したままです。 本当はLoaded Configuration Fileの結果が(None)となるはずだと思うのです。 ■phpinfo();の結果 [結果] Configuration File (php.ini) Path: /etc Loaded Configuration File: /etc/php.ini ちなみに削除前は以下の通りです。 ■php -i | grep php.ini [結果] Configuration File (php.ini) Path => /etc Loaded Configuration File => /etc/php.ini ■phpinfo();の結果 [結果] Configuration File (php.ini) Path: /etc Loaded Configuration File: /etc/php.ini キャッシュかとも思いキャッシュを削除してみましたが変わりませんでした。 上記の理由なのかtimezoneを設定してみても同じです。 ■php -i | grep timezone [結果] Default timezone => Asia/Tokyo date.timezone => Asia/Tokyo => Asia/Tokyo ■phpinfo();の結果 [結果] Default timezone:UTC PHPは5.6でnginxで動かしています。 アドバイスをお願いします。

    • 締切済み
    • PHP
  • 同時アクセスについて

    入力→HTMLタグをつけて表示、というスクリプトを作っています。例えば「あいうえお」と入力したら「<h1>あいうえお</h1>」というふうに表示する、といった感じです。記録は取っておらず、純粋に表示するのみです。 ここで気になっているのが、2人以上の人が同時にこのスクリプトを実行した場合、その人達のブラウザには正しい結果が表示されるのだろうか、という点です。 AさんとBさんが同時に実行した時、Aさんの入力結果がBさんに見えたり、AさんとBさんの内容が混ざって表示されたり、ということはないのでしょうか? 非常に初歩的な質問で申し訳ありません。 ちなみに、これは3つのスクリプトを作って使っています。1(入力欄を幾つ設けるかなどの設定)→2(入力)→3(表示)という感じになっています。 セッションを使うことも考えていますが、未だ勉強中でセッションについてはよく理解していません。 バージョンはPHP4.3です。

    • ベストアンサー
    • PHP
  • PHP 余分に出来たタグを消したい

    PHP初心者です。 ただ今カレンダーを作成しております。 コードは以下です。 <?php $d=isset($_GET['d'])? $_GET['d']:date("Y-n-d"); list($year,$month,$day)=explode("-",$d); $prev=date("Y-n-d",mktime(0,0,0,$month-1,1,$year)); $next=date("Y-n-d",mktime(0,0,0,$month+1,1,$year)); $timestamp = mktime(0,0,0,$month,1,$year); $fd=date("w",$timestamp); $ld=date("t",$timestamp); ?> <table> <tr> <th><a href="?d=<?php echo$prev; ?>">←</a></th> <th colspan="5"><?php echo ("<h1>".$year."年".$month."月</h1>"); ?></th>   <th><a href="?d=<?php echo$next; ?>">→</a></th> </tr> <tr> <th class="sun">日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th class="sat">土</th> </tr> <tr> <?php $offset = $fd; // while($fd--){ //$y ++; // 空セル文曜日を増やす $s .= "<td></td>\n"; } for($i=1; $i<=$ld; $i++){ $tmp = $offset + $i; //$tmpを$offset(1日までの空セル) と $i(31日)を足したものにする $s.="<td>$i</td>\n"; //$sに日数とセルを追加 if($tmp % 7 ==0){ //$tmp(空セル+その月の日数)を7で割りあまりが0すなわち土曜日まできたら $s.= "</tr>\n<tr>\n"; //</tr>で改行をいれる } } $y=0; for($i=1; $i<=$tmp; $i++){ //$tmp(空セル+その月の日数)になるまで if($y % 7 == 0){ //7倍数になったら0にリセットする $y = 0; } $y++; //リセットされた残りの曜日 } $r=7-$y; $y=0; while($r--){ $s.='<td></td>'; } for($i=1; $i<=$tmp; $i++){ if($tmp % 7 == 0){ $s.="</table>\n"; break; }else{ $s.="</tr></table>\n"; break; } } echo $s; ?> 一見出来ているようですが、最終日が土曜日になると余分な<tr>が入ってしまいます。 原因として、 if($tmp % 7 ==0){ $s.= "</tr>\n<tr>\n";} と入れてあり、土曜日に7がくる(7で割り切れる数字で終わる)であるとは理解しているのですが、どうすれば、「最終セルに最後の日が来たときに<tr>をいれない」といった命令の仕方がわかりません。 素人ですので、分かりやすく解説していただけると嬉しいです。 よろしくお願い致します。

  • phpについて

    phpで書かれた画像を表示するコードにライブラリの影響を与えたいのです。 <?php printf('<img class="i" img src="image/%s/%s1.png">', $ver, $ver);?> この画像を表示させるphpコードにaタグと imgタグをつけたいのですがどうすればいいですか? 参照サイト https://web-roku.com/luminous

    • ベストアンサー
    • PHP
  • phpで5で割って余りを表示させない方法

    phpで5で割って余りを表示させない方法を探しています。 例えば <?php for ($i = 1; $i < 15; $i++) { echo $i; if ($i % 5 == 0) { echo "<br />"; }} ?> を実行させた場合 12345<br/> 678910<br/> 11121314 となりますが、この場合11から14までを表示させないようにすればどうすればできますか?

    • 締切済み
    • PHP
  • PHPがおかしい

    $GET['type']が"login"でも"tutorial_hsp"と同じ挙動をしてしまいます。 部分のスクリプトはこんな感じです。 if(!isset($_GET['type'])){ echo "<h2>14ちゃんねるデベロッパーメニュー</h2>"; echo "<p><a href=\"menu.php?type=tutorial_hsp\">14ちゃんねるの扱い方<a href=\"https://hsp.tv\">(HSP)</a></a></p>"; echo "<p><a href=\"https://ux.getuploader.com/14channel/\">作ったツールのアップロード(別サイトに飛びます)</a></p>"; echo "<p><a href=\"../program\">作ったツールの宣伝</a></p>"; }else{ if($_GET['type'] = "tutorial_hsp"){ echo "<h2>14ちゃんねるの扱い方(HSP)</h2>"; echo "<p>"; echo "まずは、<a href=\"hsp.tv\">HSP</a>をインストールしてください。<br>"; echo "そうしたら、「HSPスクリプトエディタ」を開いて、以下のスクリプトを入力してください。"; echo "</p>"; echo "続きは制作中です..."; }else{ if($_GET['type'] = "login"){ echo "<h2>404 Not Found</h2>"; } } } URL: http://arkmonster.r.ribbon.to/developer/menu.php?type=login

  • file_get_contentsについて

    file_get_contents()で、 <time datetime="<?php echo $mtime = date('Y-m-d\TH:i:s', getlastmod()); ?>"><?php echo $mtime; ?></time> を取得すると、 <time datetime="<?php echo $mtime = date('Y-m-d\TH:i:s', getlastmod()); ?>"><?php echo $mtime; ?></time> (全く同じ文字列)を吐き出しますよね。 そして、それをechoすると、<?php ~ ?>はそのままHTML上に表示されます。 これを、PHPを実行して、 <time datetime="2010-02-19T23:40:10">2010-02-19T23:40:10</time> のように表示させるようにするには、どのようにするのが一般的なのでしょうか。 先人の皆さんの知恵をおかしください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • perlからphpを実行して結果を得る方法

    perlのプログラムから同一サーバー内のphpを実行してその結果を取得したいのですが、うまくいきません。 print.phpというファイルの中身が <? echo "<div>1234567890</div>"; ?> だとして、これをブラウザで見た場合のソースは <div>1234567890</div> となるわけで、この1234567890をperlのプログラム内で表示するために main.cgiというプログラム内で $data = '/***/www/print.php'; open(FH,$data); @list = <FH>; foreach $data_line ( @list ) { if ($data_line =~/<div>/ ){ $data_line =~ s/<div>//i; $data_line =~ s/<\/div>//i; print = $data_line; } } close(FH); のような処理をすると echo "1234567890"; という実行前のphpの中身が表示されてしまいます。 表示したい結果はこの場合ブラウザでphpを実行した時のソースからdivタグをperl側で抜き取った 1234567890 なのですが、同じ事をperlの書き換えで実現する上手い方法があればご教授いただけますと助かります。

    • ベストアンサー
    • CGI

専門家に質問してみよう