• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php 処理が長い時の動作)

php処理が長い時の動作

noname#244856の回答

  • ベストアンサー
noname#244856
noname#244856
回答No.2

PHPだけで「徐々に表示する」という処理を行うことは可能です。有名なPHP製CMSであるWordpressの設定画面もこれを採用していますね。 処理途中で結果を出力 http://so-zou.jp/web-app/tech/programming/php/sample/progress.htm 【補足】 ・php.iniの設定によっては何もしなくてもob_start();された状態になっていますが、最初に while (ob_get_level()) { ob_end_clean(); } としておけば ob_flush() は不要です。 ・@演算子でエラー抑制しなくても上記のようにちゃんとバッファリングネストレベルを把握した上でコーディングすればエラーは絶対に発生しません。バッファリングのことを理解しないで初心者が煩雑に書いたコードが流布された結果でしょう。 ・PHP5.4以降でセーフモードは消滅しました。 ただ、こういうやり方自体がレガシーすぎるのは言うまでもありません。モダンなほとんどのサイトはJavaScriptを併用して非同期処理を行っているはずです。どうせスクロールさせるにはscriptタグの生成が必要ですし、最初から非同期でやればいい話です。 JavaScript(jQuery)からPHPのAPIを利用する http://qiita.com/mpyw/items/62e6e415f86eb30a5ff4

digda_mc
質問者

お礼

実現できました。ありがとうございました!

関連するQ&A

  • PHP + Oracleで『処理中です』を表示したい…

    PHP + Oracleで『処理中です』を表示したい… PHP5 + Oracle10gでの開発中です。 フォーム1(1.php)でUser・PWを入力し、 ボタンをクリックすると SQL(SELECT文)を実行して結果をフォーム2(2.php)に 表示する』といったものを開発したいと考えています。 結果画面でのSQL結果表示は問題なくできたのですが、 結果表示までに時間がかかってしまいます。 2.phpはこんな感じです。 <?php // POSTされたUser・PWのチェック // <head>をecho // Oracleに接続 // SQL実行 <-- これが時間がかかる // <body>をecho <-- <table>にSELECT結果をセット ?> そこで、SELECT結果を表示するまでの間『処理中です』みたいなものを 表示したいのですがどうしたらいいのでしょうか。 可能であれば、'処理中です'という文字と プログレスバーのようなGIFを表示したいと思います。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • メール送信のPHPの件で

    現在、 <?php //HTML内容出力 echo "<html>"; echo "<head>"; echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"; echo "<title>メールフォーム(送信処理)</title>"; echo "</head>"; echo "<body>"; //文字コード設定 mb_language("ja"); mb_internal_encoding("utf-8"); //*環境設定************************************* //件名 $subject = "お問い合わせがありました"; //管理人メールアドレス(宛先) $to = "○○@gmail.com"; //********************************************** //**POSTデータ受け取り************************** //差出人メールアドレス格納 $header = "From: ". $_POST['email']; //本文格納 $body = "■お名前:" . $_POST['name'] ."\n"; $body .= "■内容:" . $_POST['message'] ."\n"; //************************************************ if(mb_send_mail($to,$subject,$body,$header)){ echo "メール送信しました。"; }else{ echo "メール送信失敗しました。"; } //HTML内容出力 echo "</body>"; echo "</html>"; ?> こういう感じでメール送信フォームのPHPを正常稼働させているのですが、 これに送信者への確認メールを送信するには、どのように追記すればよろしいでしょうか? よろしくご教授の方、お願いいたします。

    • 締切済み
    • PHP
  • php言語の脆弱性について

    php言語の脆弱性について パスワード認証において、phpのstrcmp, strcasecmpといった関数には脆弱性があると聞きます。 そこで、具体的にどのような脆弱性があるのかお伺いしたいと思います。 たとえば、認証画面にパスワードの送信フォームがあり、パスワードが分からない場合 $pass = **** if (isset($_POST['pass'])) if (strcasecmp($_POST['pass'], $pass) == 0) echo "Correct!"; else echo "Incorrect" というプログラムになっていた場合、送信フォームにどのような文字列を渡せば認証が通るのでしょうか。 また、認証が通る仕組みについても教えていただけたらと思います。

  • phpのメール送信

    ホームページにメールフォームを作りたいのですが、 送信できなくて困っています。 ソースは次の通りです。 <?php echo "<html>"; echo "<head>"; echo "<title>メールフォーム(送信処理)</title>"; echo "</head>"; echo "<body>"; mb_language("japanese"); mb_internal_encoding("UTF-8"); $to = "アドレスA"; $subject = "件名"; $from = "アドレスB"; $header = "From: ". $from; //本文格納 $mailbody = "■お名前:" . $_post["name"] ."\n"; $mailbody .= "■内容:" . $_post["sentaku"] ."\n"; if(mb_send_mail($to, $subject, $mailbody, $header)){ echo "送信しました。"; }else{ echo "送信できませんでした。"; } echo "</body>"; echo "</html>"; ?> またif文の日本語が文字化けしてしまいます。 メール送信できて、文字化けもないようにしたいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • フォームから受け取ったデータを変数に/PHP

    入力フォームからデータを送信し、受け取ります。 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> この時に受けったデータが、「りんご」だとして この「りんご」を変数にしたいです。 ↓ <?php $keyword = "りんご"; ?> このようにするには、 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> の後にどのような処理をすればよいでしょうか? または初めから「$keyword」としてフォームからデータを送ることはできるのでしょうか? 何卒ご指導の程よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのシンプルなメールフォーム

    あるサイトにて、単一phpのメールフォームのソースをコピーし、使用としましたが、 設定したメールアドレスに、送信ボタンを押しましたが、 受信されません。  ・送信後、「メールを送信しました」と表示されます。  ・送信のあて先は、何も反応なし。  ・ソースの「●●@●●」はダミーです。 以下ソースです。原因がわかりますでしょうか。ご教授のほどよろしくお願いします。 ―――――――――――――――――――――――――――――――――――― <?php // 送信フラグ $send_flg = false; // エラーメッセージ $err_msg = array(); // 送信ボタンを押した後の処理 if ($_POST["post_flg"]) { // エラー if ($_POST["name"] == "") { $err_msg[] = "「お名前」は必須です"; } if ($_POST["email"] == "") { $err_msg[] = "「メールアドレス」は必須です"; } // エラーが無ければ送信 if (count($err_msg) == 0) { // 宛先 $mail_to = "●●@●●"; // 送信元アドレス $mail_from = "form@example.com"; // 件名 $mail_subject = "メールフォームから送信がありました"; // 本文 $mail_body = ""; $mail_body.= "■お名前\n".$_POST["name"]."\n\n"; $mail_body.= "■メールアドレス\n".$_POST["email"]."\n\n"; $mail_body.= "■コメント\n".$_POST["comment"]; // 送信処理 mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_send_mail($mail_to, $mail_subject, $mail_body, "From: <".$mail_from.">"); $send_flg = true; $_POST = array(); } } ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>メールフォーム</title> </head> <body> <?php // 初期フォーム表示 if (!$send_flg) { ?> <h1>メールフォーム</h1> <?php // エラーメッセージがある場合 if (count($err_msg) > 0) { ?> <p style="color:red;"> <?php foreach ($err_msg as $val) { ?> ※<?php echo $val ?><br> <?php } ?> </p> <?php } ?> <form action="mail.php" method="post"> <p> お名前<br> <input type="text" cols="30" name="name" value="<?php echo $_POST["name"] ?>"><br> </p> <p> メールアドレス<br> <input type="text" cols="30" name="email" value="<?php echo $_POST["email"] ?>"><br> </p> <p> コメント<br> <textarea name="comment" cols="50" rows="10"><?php echo $_POST["comment"] ?></textarea><br> </p> <input type="submit" name="post_flg" value="送信する"><br> </form> <?php // メール送信後の表示 } else { ?> <br><br><br><br>メールを送信しました。<br> <?php } ?> </body> </html> ――――――――――――――――――――――――――――――――――――

    • ベストアンサー
    • PHP
  • PHPの syntax error について

    PHPのコードを書いて、添付のスクリーンショットのようなエラーが出てきます。 コードは次のようなもので、HTML文書のフォームから送られてきた名前のファイルを消去するものです。 <body> <?php $FileName=$_POST["deleteFileName"]; $FileName="C:\xampp\htdocs\".$FileName; echo $FileName ; unlink($FileName); //echo "<form id='next' method='post' action='QAgmeOver.php' >"; //echo "<input type='submit' value='call QAgameOver' >"; //echo "</form>"; ?> <!-- <script type="text/JavaScript"> window.document.getElementById("next").submit(); </script> --> </body> 問題の line 18 というのは次の行です。 //echo "<form id='next' method='post' action='QAgmeOver.php' >"; unexpected T_STRING というのは、何か文字列の書き方に問題があるということらしいのですが、何をどうやって見てもエラーが消えないのでコメントアウトしてみましたが、それでも同じエラーメッセージが出てきます。 どうすればこのエラーが出なくなるのか、詳しい方がいらっしゃいましたら教えてください。お願いいたします。

    • ベストアンサー
    • PHP
  • 【PHP】関数で処理が止まってる??

    お世話になります。 PHPでの質問ですが、PHPに限ったものではないように思いますので、プログラム全般に対しての質問と思って下さって結構です。 ※PHP特有のという意見があれば、それも大歓迎です。 下記のようなコードを組んでみました。 <?php echo "func1の結果["; echo func1(); echo "]"; function func1(){ (内容は割愛) return TRUE; } ?> このコードをアップしてアクセスしてみると   出力結果  func1の結果[ でした。 ブラウザのステータスに「ページが表示されました」とあるので、処理中で出力待ちということはないと思います。 > echo func1(); > echo "]"; の箇所の出力はどうなっていると考えればいいのでしょうか? 「関数の内容次第で・・・」とお答えになる方、どういう内容だとこのような結果になるのかというところでお答えください。 私のプログラムによる根本的な考え方は、プログラムは上から下に順番になので、 上記内容の箇所にどんなコードがあったとしても、func1関数はTRUEを返すので、結果としては「func1の結果[1]」となるはずでした。 でも実際の出力結果をみると処理が途中で(おそらくfunc1()内で)止まっているともいます。 timeoutではないため無限ループに嵌ってっていうのもないと思います。 これはどういうことでしょう???

    • 締切済み
    • PHP
  • phpのメール送信での質問になります

    メールとお問い合わせ内容は届くのですが、名前とアドレスが届かないので間違っている箇所を教えていただけるとありがたいです。 以下コードになります。 html <body> <main> <section> <h2>お問合せ内容の確認</h2> <form action="mailto.php" method="post"> <div class="contant-area"> <div class="label-container"> <label class="item intem-name">名前</label> <label class="item item-email">メールアドレス</label> <label class="item item-message">問い合わせ内容</label> </div> <div class="text"> <p class="item-post" name="name"><?php echo $_POST["name"]; ?></p> <p class="item-post" name="email"><?php echo $_POST["email"]; ?></p> <textarea class="item-post item-textarea" name="message"><?php echo $_POST["message"]; ?></textarea> </div> </div> <div class="button-area"> <input type="submit" value="送信"> </div> </form> </section> </main> </body> php <?php // フォームデータの取得 $name = $_POST[&#039;name&#039;]; $email = $_POST[&#039;email&#039;]; $message = $_POST[&#039;message&#039;]; // 送信先のメールアドレス $to = &#039;*****@gmail.com&#039;; // 件名 $subject = &#039;お問い合わせがありました&#039;; // メール本文 $body = "名前: $name\n"; $body .= "メールアドレス: $email\n"; $body .= "問い合わせ内容:\n$message"; // 送信元のメールアドレスと名前 $from = &#039;*****1690.xsrv.jp&#039;; $fromName = &#039;お問い合わせフォーム&#039;; // ヘッダー $headers = "From: $fromName <$from>"; // メール送信 $mailResult = mail($to, $subject, $body, $headers); ?>

    • ベストアンサー
    • PHP
  • cURL関数を使用したphpからのpost送信と画面遷移

    cURL関数を使用したphpからのpost送信と画面遷移 とある事情で、どうしてもphpからpost送信をしなければならず、 且つ指定したURL先に画面遷移してほしいと考えております。 現状はpost送信自体は成功しているのですが、指定したURL先への画面遷移方法がわかりません。 無理にこの関数を使用した方法で実装をしたいわけではありませんが、 フォームのサブミットを押してpost送信をする処理と、同等の事をphpからpost送信、画面遷移が出来る方法があるのでしょうか? ご教授よろしくお願い致します。

    • 締切済み
    • PHP