У меня есть небольшая проблема.У меня есть контроллер и действие, написанное на phalcon, которое доступно по адресу http://localhost/download/data/(1-5000). Что он делает, он связывает с curl с веб-сайтом и записывает данные в базу данных.Поскольку объем информации велик, я запускаю цикл, который помещает все эти отдельные задания в администратор очередей RabbitMQ, давая в качестве параметра page_id.Я смог поместить все 5000 заданий в очередь и создал скрипт, который должен использовать эти задания, но по какой-то причине он не работает, потому что, если бы он работал, он бы создал записи в базе данных.Файл php Listener.php
<?php
require_once( __DIR__ . '/../vendor/autoload.php');
use PhpAmqpLib\Connection\AMQPStreamConnection;
ob_start();
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
if (!$connection) {
die("no connection");
}
$channel = $connection->channel();
$channel->queue_declare('HelloTime', false, false, false, false);
echo " [*] Waiting for messages. To exit press CTRL+C\n";
$callback = function ($pg) {
echo ' [x] Received ', $pg->body, "\n";
$page = $pg->body;
header('Location: http://localhost/download/data/'.$page.'');
};
$channel->basic_consume('HelloTime', '', false, true, false, false, $callback);
while (count($channel->callbacks)) {
$channel->wait();
}
$this->fsockopen();
ob_end_flush();
, поэтому после создания очереди я запускаю в терминале bash php Listener.php
, где я вижу, что он был выполнен и удален из очереди sudo rabbitmqctl list_queue
показывает от 5000 до 0, но нет никакого следа выполнения на контроллере и действиях по некоторым причинам, которые я не понимаю.
Я использовал ob_start(); ob_end_flush();
для удаления ошибок, таких как cannot modify header information
Текущая загрузка curl илогика входа в базу данных находится в Download controller, написанном на Phalcon
Почему обратный вызов не может выполнить действие на удаленном контроллере?