2012-10-08 59 views
5

JavascriptでsetIntervalと同じように何度も何度も何度も何度もPHP関数を何度も何度も使うことができますか?私たちは時間を設定し、スクリプトが中断されるか閉じられるまでその仕事をしています。PHPでsetIntervalを使用するには?

のindex.php

<? 
$Wall = new Wall_Updates(); 
$updatesarray=$Wall->Updates(); 
foreach($updatesarray as $data) 
{ 
    $likes=$data['likes']; 
    ?> 
    <div id="likes"><?php echo $likes; ?></div> 
    <? 
} 
?> 

とWall_Updates()関数は、私はこのWall_Updates()関数は再びMySQLからのデータを取得したいFUNCTION.PHP

<?php 

class Wall_Updates {  
    public function Updates() { 
     $myname=$_COOKIE['usename']; 
     $query=mysql_query("SELECT * FROM posts WHERE name='$myname'"); 
     while($row=mysql_fetch_array($query)) 
      $data[]=$row; 
     return $data; 
    } 
} 
?> 

にここで定義されますもう一度、更新されます。

+0

PHPが実行され、それが唯一の静的なページを生成することをどこあなたが知っているが、どんな:)

使用上

function setInterval($f, $milliseconds) { $seconds=(int)$milliseconds/1000; while(true) { $f(); sleep($seconds); } } 

このコードを試してみてください?別の 'while'ループを使うこともできますし、ページ生成を遅らせる' sleep() 'コールを使うこともできます。しかし、それはおそらく無意味です。 – mario

+0

あなたのページを「好き」の合計で更新したいようです。ページ全体をリロードしない限り、JavaScriptでこれを行う必要があります。 –

答えて

15

記録のために:私はそれは悪い考えだと思います。

setInterval(function(){ 
    echo "hi!\n"; 
}, 1000); 

または::

$a=1; 
$b=2; 

setInterval(function() use($a, $b) { 
    echo 'a='.$a.'; $b='.$b."\n"; 
}, 1000); 
+2

なぜそれは悪い考えだと思いますか? –

+0

私はそれを試したところ、私のサイトは機能しなくなりました。私はintervallとして10000を使用しました。 – Black

+2

@b_dubb:javascriptで 'setInterval'のように動作しないためです。このような実装では、JSが行うときに、「バックグラウンドで」特定のタスクを実行することはできません。 JSは非同期なので、PHPではありません。それが私がそれが悪い考えだと思った理由です。 –

0

正確に達成したいことは明確ではありません。

PHPはリクエストに応じてコンテンツを配信するだけであることをご存知ですか?

サーバが何かをしばらく更新したい場合(例えばファイル)には、cronjob(on * nix)を使います。

WEBPAGEで何かを再クエリしたい場合は、javascriptで行い、新鮮なコンテンツを提供するPHPスクリプトを呼び出します。

6

setIntervalを使用して、AJAxを使用して.phpページから結果をポーリングし、結果を出力することをお勧めします。

のJavascriptとは異なり
<script> 
    var poll = true; 
    var getData = function() { 
     if (poll) { 
      $.get('getData.php', function(data) { $('#likes').html(data); }); 
     } 
    }; 

    $(document).ready(function() { 
     setInterval(getData, 5000); 
     $('.comm').click(function() { poll = false; }); 
     $('.comm').blur(function() { poll = true; }); 
    }); 
</script> 
+0

男thatsとても良い。私はちょうど、クラスcomm()のテキストエリアのonclickがこの間隔を明確にし、テキストエリアにフォーカスが再び開始間隔になっていないときにもう一度します.... Please – Heart

+0

あなたはgetDataで使用可能なページ上の変数を使用して、より多くのデータを取得するかどうかを確認します。上記の答えを更新して、新しい変数とクリック/ブラーハンドラを追加しました。希望が役立ちます。 – Sol

+0

あなたの1つは動作していませんが、私はW3SCHOOLS.COMを使用して1つ作成しました。私が直面している問題は、間隔を止めるためにテキストエリアを2回クリックする必要があるということです。コードはここに – Heart

0

、PHPはサーバー側で実行されます。

だから、この使用してjQueryのようになります。 PHPにはsetTimeout機能はありません。スクリプトを呼び出すcronjobや他のPHPスクリプトを使って、近づくことができます。

+0

更新ページの機能を実現するには、solcheasソリューションをご覧ください。 )あなたが望んだことは疑問からはっきりしていなかった; –

関連する問題