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:
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.
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:
Ga ik vervolgens een call doen, dan krijg ik de melding:Warning: SoapClient::SoapClient() [function.SoapClient-SoapClient]: SSL: fatal protocol error in E:\Inetpub\wwwroot\soaptest\includes\soapparser.inc.php on line 49
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.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
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.