В последнее время мы столкнулись с проблемой, которая была заблокирована в течение нескольких дней, пока вы не получите, чтобы выяснить источник. Мы давно планировали на использовании веб-сервисы . NET приложений PHP без проблем, но на этот раз это было сделано с новыми технологиями, WCF (Windows Communication Foundation) от Microsoft. NET 3.5. Проблема в том, что как только я попал в PHP приложение производства вернул пустой снимка, без дополнительной информации. Анализ журналов мы увидели, что процесс Apache привела к сегментации , что мы пришли, чтобы не видеть никаких исключений.
После многочисленных испытаний нам удалось выделить ошибку в строке кода, который создает экземпляр нового WebService, если это часть eliminábamos функционировать должным образом.
- SoapClient ( "http://wcf.tudominio.com/webservice/ws.svc?wsdl" ) ; Клиент $ = новый SoapClient ("http://wcf.tudominio.com/webservice/ws.svc?wsdl");
Странно то, что он заранее производственной среды, которые работали, ничего не понимал. Анализируя машин различных средах были идентичны по конфигурации, за исключением некоторых версиях и PHP SOAP параметров в производстве машин имеют кэш WSDL активирован, а другой отключен.
- soap.wsdl_cache_enabled = 1
- soap.wsdl_cache_dir = / TMP /
- soap.wsdl_cache_ttl = 7200
- soap.wsdl_cache_limit = 50
Сообщение об ошибке не может быть кэширования. Да, это, отключить кэш-памяти с производственным сервером все начали работать должным образом.
Perfect, но кэш-памяти должен быть активирован, приложение использует около 35 веб-сервисы, если для каждого экземпляра каждого из них должна быть загружена до WSDL, производительность падает на пол, имеет важное значение.
Ничего, невероятно громоздкой решение:
- , '0′ ) ; ini_set ('soap.wsdl_cache_enabled', '0 ');
- , '0′ ) ; ini_set ('soap.wsdl_cache_ttl', '0 ');
- , '0′ ) ; ini_set ('soap.wsdl_cache', '0 ');
- "http://wcf.tudominio.com/webservice/ws.svc?wsdl" ) ; Клиент $ = новый SoapClient ("http://wcf.tudominio.com/webservice/ws.svc?wsdl");
- , '1′ ) ; ini_set ('soap.wsdl_cache_enabled', '1 ');
- , '7200′ ) ; ini_set ('soap.wsdl_cache_ttl, '7200');
- , '3′ ) ; ini_set ('soap.wsdl_cache', '3 ');
Таким образом, отключить кэш-памяти до экземпляра WebService и только повернул снова после. Мы не нашли еще один способ решить его, ни мы нашли какого-либо упоминания о тех, кто страдает той же проблемой. Решение это плохо, очень плохо, не обойти, но она работает и позволяет нам кое-как довести дело до конца, пока мы знаем, почему это происходит.










5 пользователей не прокомментировали "ошибка сегментации для создания экземпляра вебсервис WCF. NET из PHP"
Feed комментариев к данной записи TrackbackЯ хотел бы проверить сервер PHP и посмотреть на http://bugs.php.net/ для OS, Win32 и Unix-основе.
Приветствие.
Привет @ osus:
проверьте следующее:
http://bugs.php.net/bug.php?id=50722
Это ближайший, что я нашел для вас.
Счет, как я был здесь.
С уважением
Родриго.
[...] Ошибка сегментации для создания экземпляра вебсервис WCF. NET с PHP [...]
Привет Bellz,
Спасибо за ваши комментарии, но мы все искали поиска нерешенными.
Хорошее Родриго,
Мы уже рассмотрели, это не наш случай. С сервера перезагружена и сценарий, с одной строки кода, который создает экземпляр WCF, бросает ошибку, не проблема насыщения кэш-памяти.
Спасибо в любом случае.
Написать ответ