質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

3回答

4569閲覧

PHPでDBから値を取り出す処理をタイマー処理で練り返ししたときにうまく取り出せてない

URON

総合スコア20

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/01/31 09:56

編集2017/01/31 10:22

###やりたいこと

初心者です。
PHPでDBからiframeに表示させたいURLを5秒刻みに取り出しています。
そして5秒刻みに更新している途中に、DBに格納されてる値(表示させたいページのURL)を書き換えたのですが、次の5秒ごとの値取り出しでうまくiframeに写っているWEBページが変わっていると思いきや、変わっていません・・・

おそらくまずDBから新しい値を取り出せてないのだと思います。

原因がわからないので教えてください。

###該当のソースコード

PHP

1 <script> 2 3function hyoji() 4{ 5 <?php 6 try { 7 //データベース 8 $dbh = new PDO('****','****', '*****'); 9 foreach($dbh->query('SELECT * from kaigiURL') as $row) { 10 $URL=$row['URL']; 11 12 } 13 14 $dbh = null; 15 16 } catch (PDOException $e) { 17 print "エラー!: " . $e->getMessage() . "<br/>"; 18 die(); 19 } ?> 20 21 document.getElementById('iframe').contentWindow.location.replace("<?php echo $URL ?>"); 22 23} 24function startfnc() 25{ 26 27 //関数hyoji()を1000ミリ秒間隔で呼び出す 28 setInterval("hyoji()",5000); 29} 30startfnc(); 31</script>

取り出した値を$URLに格納してます。
それをiframeに表示させています。

###PHPとMySqlのバージョン

PHPバージョン:5.6.22

MySqlバージョン:5.0.95

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

この手の処理はロングポーリングやピギーバックなど特殊な
対応をしないと、サーバーに負担がかかります。
特に自分自信が自分のためだけに立てているサーバーなら
誰にも文句はいわれないでしょうけど、一般に公開されている
サーバーなどに5秒ごとに要求をおくるとしたら
「攻撃」とみなされる可能性が高いでしょう
それによって先方のサービスに遅延が発生したりした場合は
損害賠償を請求される可能性もあるのでご注意ください

投稿2017/01/31 10:13

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

URON

2017/01/31 10:16

いまはわかりやすいように5秒ですが、そのうちは5分に一度にする予定です。
yambejp

2017/01/31 10:29 編集

自分用サーバーへのアクセスを前提だとして補足します まず、iframeのsrcを5秒ごとに更新します その際キャッシュなどが影響しないよう、適当な文字を毎回getで渡します hoge.php?a=1&b=2&dummy=20170131192350 的な実行日時(秒単位)でつければ5秒ごとに読むならまいかいユニークな処理になるでしょう その上でreadystateなどで読み込みが完了していることをチェックする 必要があるかもしれません。 ただし5秒ごとに読むと前の読み込みが終わっていないのにどんどん 読み込みが続いてしまうリスクがあることは考慮してください
URON

2017/01/31 12:54

ロングポーリングやピギーバックというのを調べて見たのですが、初心者の自分にはよくわかりませんでした・・・。 どういうものなのか教えていただけませんか?それか解説してあるサイトのURLを教えていただけると嬉しいです。
yambejp

2017/01/31 14:17 編集

例えばLineのような仕組み(昔はチャットといった方がわかりやすかった) をWEB上に作りたいとして自分が書き込んだ内容はすぐに見えますが、 相手がいつ書き込むか(または書き込まないか)わからないですよね? やり方としては質問者さんが当初かいたような数秒に1度更新がないか 確認にいけばいいですが、そもそも相手の書き込みが頻繁に行われる わけでもなく、読みにいってもほとんど空振りです。 それでも何も書き込んだりしなくても読みに行くとサーバとの間で それなりの対話が必要になります それを避けるために他のサービスにあいのりしてデータ交換したり とりあえずずーっと待っている状態にするような技術が前述の キーワードです。
URON

2017/02/01 10:23

自分なりに調べてみたのですが、「Socket.io」というのを使えばできそうだなと思いました。 ちなみにSocket.ioというのも「ロングポーリングやピギーバック」と似たようなものなのですか?
guest

0

Javascriptは5秒ごとに実行されますが、PHPの処理はページを表示した最初の1回だけしか実行されません。
表示したページのソースコードを見てみてください。phpタグで囲まれた部分は消滅していますよね?なので、一度PHPで出力された部分はそれっきりで、同じものが5秒ごとにiframeに流し込まれるだけです。

投稿2017/01/31 10:05

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHPとJavaScriptでは実行されるタイミングが違います。
0. PHPがブラウザにHTMLを返す
0. ブラウザがJavaScriptを実行する

の順なので、JavaScript からPHPを動かす場合はAjaxなどを使用することになると思います。

投稿2017/01/31 10:02

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問