用PHP制作简单的事件监听器

时间:2018-06-28 08:23:08

标签: php event-listener

我有一个PHP脚本,可让我使用以下代码在线/离线获取任何whatsapp号码。

time.php

        <?php
ini_set('memory_limit', '-1');
require_once('/root/src/whatsprot.class.php');
require_once('api.php');
require_once('storeStatus.php');


$starttime = time();

function onPresenceAvailable($mynumber, $from)
{
    storeStatus(explode("@", $from)[0], 1);
    echo "Online: ".$from."\n";
}

function onPresenceUnavailable($mynumber, $from)
{
    storeStatus(explode("@", $from)[0], 0);
    echo "Offline: ".$from."\n";
}

function sendNumberToWhatsAppServer($number)
{
    $w->sendPresenceSubscription($number);
}

$debug = false;
$nickname = 'Test';
$username = 'Test';
$password = 'Test';


global $w;

$w = new WhatsProt($username, $nickname, $debug);

$w->eventManager()->bind('onPresenceAvailable', 'onPresenceAvailable');
$w->eventManager()->bind('onPresenceUnavailable', 'onPresenceUnavailable');


try {
  $w->connect();
} catch (Exception $e) {
  echo 'Connection error: ' . $e->getMessage();
  exit(0);
}

try {
  $w->loginWithPassword($password);
  //$w->generateStaticData();
} catch (Exception $e) {
  echo 'Login error: ' . $e->getMessage();
  exit(0);
}

$data = getAllNumbers();
$numbers = $data["data"];
$error = $data["error"];

for($i = 0; $i < count($numbers); $i++) {
    $w->sendPresenceSubscription($numbers[$i]);
    $w->pollMessage();
}


?>

当我从php time.php之类的命令提示符下执行该脚本时,它将获取所有数字,并将其传递给whatsapp服务器以获取该数字的信息。它的工作正常,没有任何问题。我一直在24/7全天候运行。

我还有另一个名为addNumber.php的php文件,具有以下功能

function addNumber($POST, $conn) {
    $response = array();
    $response["code"] = 0;
    $name = $POST["name"];
    $number = $POST["number"];
    $email = $POST["email"];
    $sql = "SELECT id FROM user WHERE email = '$email'";
    $result = $conn->query($sql);
    if($result->num_rows > 0) {
        $user_id = $result->fetch_row()[0];
        $sql = "INSERT INTO number_list(name, number, user_id) VALUES('$name', '$number', $user_id)";
        if($conn->query($sql)) {
            $response["code"] = 1;
        }
    }
    return json_encode($response);
}

此功能正在数据库中添加数字。我想将此数字传递给名为sendNumberToWhatsAppServer的time.php函数,而不使其停止工作或重新执行time.php。我听说事件监听器可以帮助我实现这一目标,但是我做不到。让我知道是否有人可以帮助我实现这一目标。我无法创建time.php的另一个实例,因为whatsapp不支持多会话。 谢谢

0 个答案:

没有答案