PHP-Java-взаимодействие - Gearman или PJB? - PullRequest
3 голосов
/ 23 марта 2011

Какой самый лучший вариант для вызова Java из PHP?

или что-то еще целиком? Под «лучшим» я подразумеваю простой в использовании, надежный, прозрачный (для целей отладки) - всю энчиладу.

Другими словами, есть ли у какого-либо решения серьезные недостатки?

Редактировать: причиной этого является сайт PHP, который должен использовать сторонний сервис SOAP. Иерархия типов, определенная в WSDL, кажется слишком сложной для любого чистого клиента PHP.

Ответы [ 2 ]

3 голосов
/ 27 марта 2011

Gearman, вероятно, не совсем то решение, которое вам нужно (если вы действительно не хотите очереди заданий, а не какой-либо RPC). Он может работать блокирующим / синхронным образом, но он приносит много накладных расходов (код / ​​приложение / и т. Д.) Участнику для того, что, как я предполагаю, является простой задачей?

Не зная, что вы пытаетесь сделать, я собираюсь выбросить какое-то предложение. XML-RPC (может быть немного менее злым, чем SOAP!) Или что-то вроде Thrift от Facebook [1], Apache Avro [2] или буферов протокола Google [3]?

[1] http://incubator.apache.org/thrift/

[2] http://avro.apache.org/

[3] http://code.google.com/apis/protocolbuffers/

3 голосов
/ 23 марта 2011

Мост PHP / Java функционален, но мы обнаружили, что он имеет тенденцию оставлять процессы JVM-зомби как дочерние элементы Apache, от которых нужно избавиться kill -9 'd. Мы закончили тем, что ежедневно выполняли работу cron для решения проблемы. Мы использовали его только для одного конкретного класса (интерфейсный класс для чьей-либо конечной точки horrid SOAP), и это было немного привередливо, когда дело дошло до жонглирования типов, но это сработало для нас. (Возможно, проблема с процессом зомби возникла из-за доисторической версии PHP, которую мы использовали в то время, поэтому она, возможно, уже исправлена.)

У меня нет опыта работы с Gearman и Java, но много опыта с PHP. С ним было приятно работать, по большей части. Наиболее раздражающая проблема заключается в том, что обработка асинхронных обновлений от вызывающей стороны требует некоторого довольно подробного кода для обработки всех возможных состояний. Тем не менее, для RPC «огонь-и-забей» и «огонь-и-вернись-немедленные результаты» победить очень сложно.

...