我正在研究關於使用棘輪的基本教程,這裏提到http://socketo.me/docs/push。Cakephp 3:React/zmq庫命名空間
我爲本教程創建了完美無瑕的測試設置。但是,當我嘗試將設置與CakePHP 3集成時,我遇到了問題。棘輪和ZMQ服務器是獨立的,只是在教程中提到的方式。只有下面的代碼段需要移動到的CakePHP 3控制器:
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'my pusher');
$socket->connect("tcp://localhost:5555");
$socket->send(json_encode($entryData));
此代碼基本上提交新數據隊列ZMQ用於轉發至棘輪。如果我將相同的4行放在CakePHP 3代碼庫之外的普通PHP文件中,它就可以工作。當我在APP \ Controller \ SamplesController中放置相同的四行時,它表示未找到類APP \ Controller \ ZMQContext。
CakePHP 3文檔提到,通過作曲家安裝的供應商庫將通過自動加載器自動提供。我已經安裝通過下面的命令作出反應\ ZMQ庫:
php composer require react/zmq
我曾嘗試通過下面的命名空間訪問類,但他們都沒有工作:
ZMQContext (Class 'App\Controller\ZMQContext' not found)
\ZMQContext (Class 'App\Controller\ZMQ' not found)
React\ZMQ\ZMQContext (Class 'App\Controller\React\ZMQ\ZMQContext' not found)
\React\ZMQ\ZMQContext (Class 'React\ZMQ\ZMQContext' not found)
可能錯過了一些在PHP命名空間概念但我的理解是,如果ZMQContext通過全局名稱空間在普通PHP文件中可用,那麼它應該也可以在CakePHP 3中通過\ ZMQContext使用。
我有以下問題:
- 如何將我的CakePHP 3 APP內將數據推送到ZMQ隊列?
APP :: path()& APP :: classname()似乎只適用於CakePHP 3應用程序中的類。如何檢查特定供應商庫類的路徑?如何正確自動加載供應商庫類? (我不希望要求/需要它們,因爲它需要爲想要通過棘輪發布數據的每個控制器完成)- 是否有關通過\ CLASSNAME訪問全局名稱空間的假設錯誤?
- 我第二次嘗試訪問供應商庫類\ ZMQContext已解析爲App \ Controller \ ZMQ。如果它應該在根名稱空間內進行嘗試,那怎麼可能?
ZMQContext不是react/zmq庫的一部分,所以它是否意味着它是libzmq的默認php綁定的一部分?
我發現ZMQContext是0MQ的php綁定API的一部分,因此可用於全局命名空間。請忽略第六個問題。 – i01000001
其工作..相同的四行..這是非常奇怪的,我沒有做任何改變只是重寫了一切..所有的問題現在已經解決..現在請忽略這一個。 – i01000001