[PHP5/WIN32/Sybase ASA9] Fout bij verbinden SOAP via SSL

Pagina: 1
Acties:

  • thegve
  • Registratie: Februari 2004
  • Laatst online: 15-11 22:04
context:
Ik ben bezig met het verbeteren van de performance van onze webshops. We werken met database-servers met producten etc die bij de klant (agrarische sector, buitengebied, brakke verbinding) staan, en de shops verbinden hier rechtstreeks mee.
Omdat er geen standaard Sybase ASA client bij PHP geleverd word, en de beheerder terecht niet de losse client wil gebruiken, zitten we vast aan ODBC. Nu ondersteund Sybase vanaf ASA9 ook standaard SOAP, en testen die ik hier mee heb uitgevoerd geven een performance winst tussen de 250 en de 1000% (op enigzins onrealistische test-cases, via HTTP).

Probleem:
Als ik in plaats van via HTTP via HTTPS probeer te verbinden, dan krijg ik een SSL fout:
Warning: SoapClient::SoapClient() [function.SoapClient-SoapClient]: SSL: fatal protocol error in E:\Inetpub\wwwroot\soaptest\includes\soapparser.inc.php on line 49
Ga ik vervolgens een call doen, dan krijg ik de melding:
Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers in E:\Inetpub\wwwroot\soaptest\includes\soapparser.inc.php:140 Stack trace: #0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://server...', 'https://server...', 1, 0) #1 [internal function]: SoapClient->__call('ws_sp_get_plant...', Array) #2 E:\Inetpub\wwwroot\soaptest\includes\soapparser.inc.php(140): SoapClient->ws_sp_get_plantnamen(Array) #3 E:\Inetpub\wwwroot\soaptest\includes\StorprocEngine.inc.php(60): SoapParser->runSP('dba.sp_get_plan...', Array) #4 E:\Inetpub\wwwroot\soaptest\index.php(55): StorprocEngine->runSP('dba.sp_get_plan...', Array) #5 {main} thrown in E:\Inetpub\wwwroot\soaptest\includes\soapparser.inc.php on line 140
Nu valt me op dat in de tweede melding iets van __dorequest(xml,http://...,https://...) staat, het gekke vind ik dus het 'http://', hier heb ik niet om gevraagd. Voorlopig ga ik er even vanuit dat dit niet 'het' probleem is, maar dat hij probeer te failoveren oid. Ik roep zelf de _dorequest functie ook niet aan, dit doet PHP dus intern. Ik roep gewoon $soapclient->soapfunctie() aan.

Ik denk dat het probleem te vinden is op ( http://nl3.php.net/file_get_contents ). Hier staat dat bij het verbinden met een IIS server via SSL de protocol error kan ontstaan, en dat ze hier omheen hebben gewerkt. Via wat PHP c-code die ik toevallig onder het zoeken tegenkwam, zag ik dat dit iets voorsteld als 'if(connected_to_iis_server() return; else print new warning;', of iets in die trant. Mijn vermoeden is dus dat de detectie specifiek is voor IIS, en dat Sybase dezelfde Microsoft library gebruikt en deze dus ook niet goed is.

Kent een van jullie dit probleem, en/of heeft iemand een suggestie hoe dit op te lossen of hier omheen te werken.

  • thegve
  • Registratie: Februari 2004
  • Laatst online: 15-11 22:04
schop

  • thegve
  • Registratie: Februari 2004
  • Laatst online: 15-11 22:04
Inmiddels opgelost, het bleek een probleem met de desbetreffende testserver te zijn. Deze stond vandaag uit en vandaar een andere DB-server gepakt, en hij draait als een tierelier.. Exacte oorzaak zal ik nog even moeten uitvissen, maar vermoedelijk zat dit in de manier hoe hij gestart is (de command-line parameters).