我有一个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不支持多会话。
谢谢