Zadejte hledaný výraz...

PHP – SOAP blokuje požiadavky na webovú stránku

Gabriel Vojtko
verified
rating uzivatele
(3 hodnocení)
31. 3. 2016 11:14:08
Prajem pekný deň,
jeden z projektov, na ktorom momentálne pracujeme vyžadoval napojenie na službu tretej strany a to prostredníctvom SOAP. Komunikácia je overovaná a podpísaná certifikátom.
Komunikácia funguje v poriadku. Problém, ktorý sa nám ale nedarí vyriešiť je blokovanie požiadaviek na stránku počas behu požiadavky SOAP.
Ak odošleme požiadavku na službu tretej strany a počas tejto doby niekto navštívi web, tak návštevník musí čakať, kým sa na našu požiadavku vráti odpoveď zo služby a spracuje sa. Tento stav je neakceptovateľný, nakoľko odpoveď na žiadosť trvá niekedy aj viac ako 30 sekúnd.
Služba je implementovaná na systéme Opencart.
Na popísaný problém sme hľadali riešenie, ale neúspešne. Budeme radi, ak sa niekto podelí o svoje skúsenosti a tento problém sa nám spoločne podarí vyriešiť.
31. 3. 2016 11:14:08
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186479
sh
verified
rating uzivatele
(22 hodnocení)
31. 3. 2016 11:22:39
To je divny, nemuze to byt hostingem kde to mate?
31. 3. 2016 11:22:39
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186478
Gabriel Vojtko
verified
rating uzivatele
(3 hodnocení)
31. 3. 2016 11:27:56
Využívame VPS hosting u Axfone.
Službu sme skúšali volať priamo cez URL ale aj cez AJAX, kde sme volali daný script. Výsledok je ale rovnaký. Stále sa čaká na odpoveď na našu požiadavku a až potom sa pristúpi na spracovanie požiadavky návštevníka.
31. 3. 2016 11:27:56
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186477
Jestli to dobře chápu, tak vy při každé návštěvě/volání skriptu voláte SOAP, od které očekáváte nějaké data?
Pak je ale chování (čekání) správné, respektive aby se nečekalo, je nutné komunikovat asynchronně.
31. 3. 2016 11:34:28
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186476
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
31. 3. 2016 11:37:17
Jestliže voláte soap při každém načtení stránky, musíte data načítat asynchronně. Soap požadavek si uložte do samostatného skriptu a volejte ho ajaxem.
31. 3. 2016 11:37:17
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186475
Gabriel Vojtko
verified
rating uzivatele
(3 hodnocení)
31. 3. 2016 11:53:18
My využívame SOAP pre import portfólia produktov. Cez webové rozhranie alebo cron raz za týždeň zavoláme službu a dáta cachujeme. Následne SOAP využívame na webe pri správe používateľov, synchronizáciu dát o používateľoch a podobne.
Naša trieda na SOAP vyzerá nasledovne. Využívame aj túto triedu z githubu https://github.com/robrichards/wse-php
Je možne v danom kóde spraviť úpravy, aby to šlo asynchrónne? Pri ďalších požiadavkách využívame rovnaký postup, takže ak sa nám podarí vyriešiť problém na tomto volaní, malo by to fungovať aj na ostatných.
Jan Stejskal - ako píšete, tieto skripty máme v súboroch, ktoré voláme cez ajax, výnimkou je pár požiadaviek, ktoré sú pre synchronizáciu dát o používateľoch.
31. 3. 2016 11:53:18
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186474
Takže jinak. Jakmile někde zavoláte daný skript, tak v době jeho běhu přestane fungovat celý web?
V tom případě to bude spíše věc konfigurace hostingu. Neprojevuje se to náhodou podobně? http://kb.wedos.com/cs/webhosting/chyba-503.html
Pokud se worker uvolní než vyprší timeout, projevuje se to jen čekáním na načtení stránky. Chyba 503 nemusí vůbec nastat.
31. 3. 2016 11:58:29
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186473
sh
verified
rating uzivatele
(22 hodnocení)
31. 3. 2016 12:25:18
Neni to spis tak, ze kdyz zavolate ten soap, tak prestane fungovat "do nacteni soapu" jen web v dane relaci danemu klientovi, co pustil soap?
nebo jestli to bezi v jednom skriptu pokazde pri nacteni, tak to pochopitelne bude cekat, nez se soap zpracuje
31. 3. 2016 12:25:18
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186472
Gabriel Vojtko
verified
rating uzivatele
(3 hodnocení)
31. 3. 2016 17:00:53
Vďaka za všetky odpovede. Ešte raz sme to paralelne testovali na viacerých rôznych zariadeniach a vyzerá to tak, že SOAP blokuje žiadosť iba na zariadení, kde je daný cron / import produktov spustení. Je možné toto nejako vyriešiť? Nakoľko import produktov môže byť spustený aj cez webové rozhranie cez AJAX požiadavky, tak to znemožňuje ďalšiu prácu s webom. Je potrebné počkať kým sa import dokončí.
Ďalšia vec, ktorú by sme radi ešte vyriešili je rýchlosť požiadavkou, ak je to vôbec z našej strany možné. Importujeme približne 50 000 produktov. Na jednu požiadavku máme nastavené vrátenie 100 produktov, spolu to robí teda 5 000 požiadaviek, 1 požiadavka so spracovaním dát a uložením do databázy trvá cca 60 sekúnd a čím viac požiadaviek odosielame, tak sa ten čas predlžuje niekedy aj na 2 - 3 minúty, čo sa nám zdá byť veľmi dlho a celý import teda trvá strašne dlho. Je to normálne?
31. 3. 2016 17:00:53
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186471
Napsal Crealab.sk;1281255
Vďaka za všetky odpovede. Ešte raz sme to paralelne testovali na viacerých rôznych zariadeniach a vyzerá to tak, že SOAP blokuje žiadosť iba na zariadení, kde je daný cron / import produktov spustení. Je možné toto nejako vyriešiť? Nakoľko import produktov môže byť spustený aj cez webové rozhranie cez AJAX požiadavky, tak to znemožňuje ďalšiu prácu s webom. Je potrebné počkať kým sa import dokončí.
Ďalšia vec, ktorú by sme radi ešte vyriešili je rýchlosť požiadavkou, ak je to vôbec z našej strany možné. Importujeme približne 50 000 produktov. Na jednu požiadavku máme nastavené vrátenie 100 produktov, spolu to robí teda 5 000 požiadaviek, 1 požiadavka so spracovaním dát a uložením do databázy trvá cca 60 sekúnd a čím viac požiadaviek odosielame, tak sa ten čas predlžuje niekedy aj na 2 - 3 minúty, čo sa nám zdá byť veľmi dlho a celý import teda trvá strašne dlho. Je to normálne?
Pokud se AJAX uz jednou zavolal, tak i kdyby jeho zpracovani na strane serveru trvalo pul minuty, tak muzes klikat webem dal. Ten AJAX se nezrusi v momente, kdy prejdes na jinou stranku, ten server ho na sve strane stale zpracovava.
1. 4. 2016 08:31:05
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186470
Napsal jbezdicek;1281431
Pokud se AJAX uz jednou zavolal, tak i kdyby jeho zpracovani na strane serveru trvalo pul minuty, tak muzes klikat webem dal. Ten AJAX se nezrusi v momente, kdy prejdes na jinou stranku, ten server ho na sve strane stale zpracovava.
Áno, to nám je jasné. :-) Ako som ale písal. Ak sa spustí proces cez webové rozhranie, tak SOAP blokuje akúkoľvek ďalšiu aktivitu s webom až do doby, kým proces SOAP a spracovanie dát skončí.
Momentálne sa snažíme prísť nato, prečo proces trvá tak dlho. Skúšali sme nastaviť cachovanie pre SOAP, no v tom prípade požiadavka nebola spracovaná vôbec, respektíve ani po niekoľkých minútach.
1. 4. 2016 09:02:30
https://webtrh.cz/diskuse/php-soap-blokuje-poziadavky-na-webovu-stranku/#reply1186469
Pro odpověď se přihlašte.
Přihlásit