Я создаю класс Result.php
, Этот класс содержит все процессы для отправки / получения с php-amqplib, все работает нормально. Я могу отправить и распечатать результат в функции обратного вызова, вызванной basic_consume
, Тем не менее, я хочу получить процесс на другой странице Main.php
,
Процесс работает так:
Result.php
require_once __DIR__ . '/vendor/autoload.php';
...
...
class Result{
function Process(){
$conn = new AMQPStreamConnection.....
......
$ch->basic_publish($msg,$exchange);
...
...
$ch->queue_bind($queue_name, '---xx--xx-');
..
..
$test_var_res="";
$callback=function($msg){
echo $msg; //this work good i can print the result
$test_var_res=$msg;
sleep(substr_count($msg->body, '.'));
$msg->delivery_info['channel']->basic_cancel($msg->delivery_info['consumer_tag']);
return $msg;
}
$ch->basic_qos(null, 1, null);
$ch->basic_consume($queue_name, '', false, false, false, false, $callback);
//close conn and ch
...
return $callback ;
}
}
main.php
require_once 'Result.php';
$test_AMQP=new Result();
echo $test_AMQP->Process();// no print nothing
ошибка
Catchable fatal error</b>: Object of class PhpAmqpLib\Message\AMQPMessage could not be converted to string
и если я попробую с var_dump(get_object_vars($msg->body));
результат нулевой
Я уверен, что ключ является переменной $callback
, но не так, как я, что возвращает значение на странице main.php
Задача ещё не решена.
Других решений пока нет …