Итак, я провел последние несколько дней, пытаясь решить эту проблему, которая, кажется, была забыта, поскольку ни одно из двух доступных расширений PECL (SAM и mqseries) давно не обновлялось. Я пробовал оба, и mqseries, кажется, дает мне больше всего на данный момент, поскольку SAM отказывается установить мне соединение, хотя MQ отлично работает из командной строки. Я успешно создал соединение с моим QueueManager, и на следующем шаге (MQOPEN) я с треском провалился:
$mqcno = array(
'Version' => MQSERIES_MQCNO_VERSION_2,
'Options' => MQSERIES_MQCNO_STANDARD_BINDING,
'MQCD' => array('ChannelName' => '[channel]',
'ConnectionName' => '[ipnumber]([port])',
'TransportType' => MQSERIES_MQXPT_TCP)
);
mqseries_connx('MQED', $mqcno, $conn, $comp_code,$reason);
if ($comp_code !== MQSERIES_MQCC_OK) {
printf("Connx CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, $reason);
exit;
}
$mqods = array('ObjectName'=>'MYPUTQUEUE', 'ObjectType'=>MQOT_Q, 'ObjectQMgrName'=>'MYQUEUEMANAGER');
mqseries_open($conn, $mqods,
MQSERIES_MQOO_FAIL_IF_QUIESCING | MQSERIES_MQOO_OUTPUT,
$obj, $comp_code,$reason);
Это приводит к тому, что $ reason заполняется 2044, что переводится как MQRC_OD_ERROR, или по-английски: 'На MQOPEN или вызов MQPUT1, дескриптор объекта MQOD недействителен ».
Итак, вопрос в том, что не так с моим MQOD?
Обновление №1: На данный момент это не решено. Я перестроил проект с нуля, чтобы решить любые проблемы во время сборки. Я все еще застрял на MQOPEN, возвращающем 2044. Образцы по-прежнему безупречно работают из CLI, так что это определенно связано с установкой расширения PECL. Если есть кто-нибудь, кто успешно установил и использует PHP против MQ в относительно недавней 64-битной среде PHP5, пожалуйста, дайте мне знать ...
Обновление №2: MQPUT1 безупречно работает с проблемой, которую я не могу получить мой ответ. На данный момент просто MQOPEN не работает.Вопрос в том; что заставляет MQOPEN возвращать 2044, когда MQPUT1 работает, что, насколько я понимаю, включает MQOPEN?