15

JavascriptのsetIntervalのように、しばらくすると自動的にphp関数を何度も使用する方法を教えてください。時間を設定すると、スクリプトが中止されるか閉じられるまで、その時間が機能します。

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()関数はここ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;
    }
}
?>

このWall_Updates()関数がmysqlからデータを何度もフェッチするようにしたいので、更新されます。

4

8 に答える 8

29

記録のために:それは悪い考えだと思います。しかし何でも:)

このコードを試してください

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

使用法:

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

または:

$a=1; 
$b=2;

setInterval(function() use($a, $b) {
    echo 'a='.$a.'; $b='.$b."\n";
}, 1000);
于 2012-10-08T14:39:38.163 に答える
8

あなたの解決策は非常に簡単です:

   $event = new EVTimer(10,2, function() {
         Do your things .. :)
   });

https://www.php.net/manual/en/ev.examples.php

于 2019-09-11T15:20:53.403 に答える
6

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

したがって、jQueryを使用すると次のようになります。

<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>
于 2012-10-08T14:34:29.263 に答える
0

Javascriptとは異なり、PHPはサーバー側で実行されます。PHPにはsetTimeout機能はありません。ただし、スクリプトを呼び出すcronjobs(または他のPHPスクリプト)を使用することで、近づけることができます。

于 2012-10-08T14:35:36.300 に答える
0

何を達成したいのかが明確ではありません。

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

サーバーで時々何か(ファイルなど)を更新する場合は、cronjob(* nix上)を使用します。

WEBPAGEで何かを再クエリする場合は、JavaScriptで実行し、新しいコンテンツを配信するPHPスクリプトを呼び出します。

于 2012-10-08T14:33:13.103 に答える
0

cronジョブを使用して、このような機能をコードに実装することをお勧めします。cronは、指定した指示に基づいてバックグラウンドで実行されます。この記事をチェックしてください

于 2020-03-17T09:50:06.063 に答える
0

Web開発の非同期の概念は、ページをリロードせずにWebページに変更を加えることと関係があるため、Webページにそのような効果が必要なときはいつでも、Ajaxのベイに実行する必要はありません。PHPは単純にその仕事をすることができます。特にチャットアプリケーションの目的で使用するために、データベース@sleepsecondsにアクセスしてデータのセットを取得します。以下のコードを参照してください。

function setInterval ( $func, $seconds ) 
{
      $seconds = (int)$seconds;
      $_func = $func;
      while ( true )
      {
            $_func;
            sleep($seconds);
      }
}

ここで、データベースにアクセスして情報のセットをダウンロードする関数get_msg()があるとします。ボタン呼び出しを繰り返し使用せずに繰り返し実行する必要がある場合は、上記のsetInterval関数の使用法を参照してください。 get_msg関数。

setInterval ( get_msg(), 5 );
于 2020-07-17T13:27:16.773 に答える
-1

JavascriptはsetInterval他のスレッドで実行され、コードフローの実行を継続します。しかし、phpは、forループによって実装される関数を呼び出した行でハングします。ただし、phpはマルチスレッドおよびフォークツールをサポートしていますが、これらは推奨されておらず、スレッドセーフではありません。

于 2019-01-26T13:36:35.517 に答える