关于php:如何避免未安装Rabbitmq的致命错误

How to avoid fatal error of rabbitmq not installed

我正在将Rabbitmq与PhpAmqpLib库一起用于codeigniter,并且工作正常,但我在一台计算机上安装了多台计算机,而Rabbitmq已安装,而另一台却没有,并且由于某些原因,我不想在其上安装Rabbitmq。铅>

我遇到错误:

Fatal error: Uncaught exception 'ErrorException' with message 'stream_socket_client(): unable
to connect to tcp://localhost:5672 (No connection could be made because the target machine actively
refused it.
)' in F:\\xampp\\htdocs\\v010-commonsocialnetwork\\application\\third_party\
abbitmq\\libraries\\vendor\
omainrg
\\codeigniter-php-amqplib\\PhpAmqpLib\\Wire\\IO\\StreamIO.php:130
Stack trace:
#0 [internal function]: PhpAmqpLib\\Wire\\IO\\StreamIO->error_handler(2, 'stream_socket_c...', 'F:\\xampp
\\htdocs...', 130, Array)
#1 F:\\xampp\\htdocs\\v010-commonsocialnetwork\\application\\third_party\
abbitmq\\libraries\\vendor\
omainrg
\\codeigniter-php-amqplib\\PhpAmqpLib\\Wire\\IO\\StreamIO.php(130): stream_socket_client('tcp://localhost
...', 10061, 'No connection c...', 3, 4, Resource id #127)
#2 F:\\xampp\\htdocs\\v010-commonsocialnetwork\\application\\third_party\
abbitmq\\libraries\\vendor\
omainrg
\\codeigniter-php-amqplib\\PhpAmqpLib\\Connection\\AbstractConnection.php(194): PhpAmqpLib\\Wire\\IO\\StreamIO-
>connect()
#3 F:\\xampp\\htdocs\\v010-commonsocialnetwork\\a in F:\\xampp\\htdocs\\v010-commonsocialnetwork\\application
\\third_party\
abbitmq\\libraries\\vendor\
omainrg\\codeigniter-php-amqplib\\PhpAmqpLib\\Wire\\IO\\StreamIO.php
on line 130

有什么办法可以避免此错误?后台作业可能不会在该计算机上添加和执行,但至少不会引发此错误。

预先感谢


您不需要在其他计算机上安装RabbitMQ。

但是您必须更改要连接的IP:

1
tcp://localhost:5672

应为

1
tcp://rabbitmq_ip_machine:5672


使用try捕获其不再发出致命错误:)

1
2
3
4
5
6
7
8
try {
                $CI->load->add_package_path(APPPATH . 'third_party/rabbitmq');
                $CI->load->library('rabbit_mq');
                $CI->load->remove_package_path(APPPATH . 'third_party/rabbitmq');
                $CI->rabbit_mq->push('background_job', json_encode(array('method'=>'check_activity_visibility','data'=>array('ActivityGUID'=>get_detail_by_id($entity_id),'ENVIRONMENT'=>ENVIRONMENT))), TRUE, array('delivery_mode' => 2));
            } catch(Exception $e) {
                // Do nothing
            }