PHP异步调用对象方法

时间:2014-08-05 14:50:43

标签: php oop asynchronous methods call

有没有办法对PHP对象方法进行异步调用?使用jquery我可以将外部文件加载到div中,但是我无法访问下面的setTemp之类的方法。我想避免等待"等待"在启动第二次更新之前更新一个对象..

我的(失败)尝试看起来像这样,三个文件:

beachregister:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>OO Method test</title>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>
        $(document).ready(function() {
            setInterval(function() {
                $("#BaiadoSancho").load();
            }, 60000);
        });

        $(document).ready(function() {
            setInterval(function() {
                $("#GraceBay").load();
            }, 60000);
        });

    </script>
</head>

<body>
    <?php
    include 'Baiadosancho.php';
    include 'Gracebay.php';

    $baia = new Baiadosancho;
    $baia->setTemp();

    $grace = new Gracebay;
    $grace->setTemp();

    // .... lots of other beaches
    ?>

    <div id = "BaiadoSancho">
        <?php $baia->setTemp(); ?>
    </div>

    <div id = "GraceBay">
        <?php $grace->setTemp() ?>
    </div>

</body>
</html>

Baiadosancho.php     

class Baiadosancho{
private $temp;

public function getTemp() {
    return $this->temp;
}

public function setTemp() {
//        $json = file_get_contents('urltogettemperature');
//        $arrayDecodedFromJSON = json_decode($json, true);
//        ...
//        $this->temp = $arrayDecodedFromJSON['temp'];
}

}

Gracebay.php     

class Gracebay {

private $temp;

public function getTemp() {
    return $this->temp;
}

public function setTemp() {
//        $json = file_get_contents('sampl/temperature');
//        $arrayDecodedFromJSON = json_decode($json, true);
//        ...
//        $this->temp = $arrayDecodedFromJSON['temp'];


}

}

..我也考虑过下面的其他方法,你觉得它们有利吗?

GearMan,PHP中的并行cURL执行,EvPeriodic和iron.io

1 个答案:

答案 0 :(得分:0)

我的问题的答案如下:

deceze写道: 如果你想要异步执行(在标准的PHP中),那么你将不得不求助于像Gearman或者可能的forks这样的东西。标准PHP是单线程的,没有事件。

虽然可以使用jquery,但是这里解释了如何从所请求的文件访问对象: Using objects in Ajax calls PHP files