ugrás a tartalomhoz

wordpress plugin megszakítja a php futását?

gex · 2008. Már. 12. (Sze), 13.08
sziasztok,

adott egy 2.3.3-as wordpressre átültetett céges weboldal, amihez a már meglévő design alapján saját témát készítettem. az oldalon van egy-két űrlap, amivel hírlevélre, előadásra jelentkezhetnek, stb. az űrlapok feldolgozása a functions.php fájlban történik.
a problémám az, hogy a php futása néha - látszólag minden ok nélkül - megszakad. az űrlapot elküldi a felhasználó és utána egy fehér képernyőt lát, én pedig a három logolási pontból csak egynek az eredményét látom. amire eddig jutottam:
  • nem történik php hiba, még egy átkozott kis notice sem jelenik meg a logban
  • a négy űrlapból kizárólag egynél fordul elő a hiba, noha mind a négy űrlap feldolgozását ugyanaz a függvény végzi a submit gomb neve alapján
  • kb minden tizedik alkalommal megszakad az űrlapfeldolgozás, szóval én a stop gomb használatát/internet megszakadását/egyéb kliens oldali problémát kizárnám
  • a dev verzióban nem tudtam reprodukálni a hibát, sőt, ha az éles oldalon töltöm ki az űrlapot, nekem mindig minden tökéletesen lefut (éles oldalon nem tudok debugolni, dev verzióban viszont nem jön elő a hiba, 22-es csapdája)

a három logolási pont:
  • a wordpress index.php fájljának elején a $_POST tömb
  • az űrlap feldolgozására hivatott függvény elején a $_POST tömb (functions.php-ban)
  • az űrlap feldolgozására hivatott függvény végén a mindenféle információk
    ezekből az elsőnek van mindig eredménye, a másik kettő szokott hiányozni. a vicces az, hogy a wordpressbe beégetett eszképelést vizsgálva raktam be az elsőt, így derült ki a hiba.

még egy apróság, van olyan, hogy egymás után 5-ször is megjelenik az első logolás eredménye (feltételezem, hogy a felhasználó nyomkodja az f5-öt a böngészőben), és mind megszakad. tehát ha valaki egyszer megszakad, akkor onnantól kezdve mindig. ebből akár azt is hihetnénk, hogy maguk az adatok okozzák a hibát, de ha utána én felviszem az ő adatait, akkor minden rendben lefut.

a függvény az init hookhoz van kapcsolva.

minden ötletet és segítséget előre is köszönök!
 
1

Teszt...

janoszen · 2008. Már. 12. (Sze), 23.47
Kb lehetetlennek érzem ennek a debuggolását ilyen formában, éles szerveren. Látni kellene az oldalt és figyelni kellene a forgalmat kliens oldali eszközökkel is, azok sok mindent el szoktak árulni. (Firebug, Live HTTP Headers, stb.)

Sajnos volt szerencsém szívni Wordpress-el, még FastCGI-n is, nem volt egy élvezet. Nem a hibakezelés jegyében született az a kód.
3

nem tudom reprodukálni a hibát

gex · 2008. Már. 13. (Cs), 11.34
pont az bajom, hogy hiába használom a firebugot/live http headers/stb-t, ha nem tudom reprodukálni a hibát. de ezt írtam is. ha én töltöm ki az űrlapot minden rendben lefut, valid, hibamentes kliens oldalon, szerver oldalon pedig nincs se fatal error, se warning, se notice a php logban.

látszólag nincs hiba, de olyan sűrűn fordul elő, hogy mégis lennie kell valahol.
6

Durvább eszközök

janoszen · 2008. Már. 13. (Cs), 15.27
Akkor maradnak a durvább eszközök, mint pl. az SQL query log, betenni a kódba megfelelő helyekre egy socket kommunikációt, amivel lejelenti, hogy mi történik a kódban, stb.
2

esetleg

rrd · 2008. Már. 13. (Cs), 11.02
Esetleg nem lehet, hogy nincs escapelve valami és mondjuk ha a user egy ' , ", & vagy ? jelet beír valahova akkor az megpusztítja a futást?
4

nincs adatbázisművelet

gex · 2008. Már. 13. (Cs), 11.44
az oldal úgy működik, hogy a kitöltött űrlapokat továbbküldi más programoknak más szervereken. a $_POST tömb átmegy egy ellenőrzésen, ha hiba van akkor visszadobja az űrlapot hibaüzenetekkel, ha nincs akkor curllel továbbküldi két másik helyre. az elakadt kérések egyébként még az én függvényemig sem jutnak el (ott logolnék másodszor), szóval ha ott van is hiba, nem amiatt szakad meg a kérés...

a wordpressben is lehetne valami pici kis bug, de akkor más űrlapoknál is előfordulna ez a hiba, nem? négy űrlapból kizárólag egynél van ez a probléma.

szerk: ja és a kérdésedre válaszolva, az űrlapokat leteszteltem spec karakterekkel is.
5

éles oldal

rrd · 2008. Már. 13. (Cs), 15.03
és miért nem tudsz éles oldalon debuggolni? lehet, hogy érdemes lenne akkor valahogy ezzel a problémarésszel kezdeni valamit.
7

banális "hiba"

gex · 2008. Már. 17. (H), 12.09
nah, úgy néz ki megvan a megoldás, és utólag nézve elég vicces a "hiba" is.

a régi oldalak mod_rewrite-tal át vannak irányítva az új oldalakra. az oldalra a tudtomon kívül mutatnak google adwords linkek, és az adwords hozzáad egy ?gclid=... paramétert a linkekhez. ezt a paramétert a mod_rewrite nem törli le, hanem hozzáfűzi az új oldal linkjéhez, ami nem is baj, mert ez kell az analyticshez. :)

mivel a wordpress init hookjában nem használható az is_page() függvény, én a query string alapján dolgoztam fel a $_POST tömböt, ami ezeknek a paraméterezett linkeknek hála meg sem történt. egyáltalán nem jutott eszembe, hogy nem azzal a request uri-val jönnek majd az emberek, amire én gondolok.

proclub és rrd köszönöm a tippeket! eddig azért nem írtam, mert most hétvégén egyik éjjel csináltam meg a logolást. kevesebb látogató volt, de így is összegyűlt jó pár kb log és még ki is kellett mazsolázni, hogy kinél és milyen hiba történik.

nem tudom mi a tanulság, de sem én nem lettem megfelelően tájékoztatva, sem a kódom nem készítettem fel mindenre, ráadásul a hibakeresést is elbénáztam. :D mégegyszer köszönöm!
8

Hiba...

janoszen · 2008. Már. 17. (H), 16.16
:S Hiba volt a részemről, hogy nem mondtam a RewriteLog-ot. Pedig eszembe juthatott volna, mert én is szívtam a Wordpress - .htaccess kombóval eleget (az oldalamon írtam is róla).
9

nem a mod_rewrite a baj

gex · 2008. Már. 17. (H), 16.45
nem a mod_rewrite volt konkrétan a baj, az csak az oka volt annak, hogy nem gondoltam a plussz paraméterekre, mert elvileg minden régi url-t átírtam. gyakorlatilag viszont a get paraméterekre nem számítottam, és a rewrite-nál sem kezeltem le.

viszont a cikket nem találom. kevés jó magyar cikket találtam wordpress berhelésről, szóval érdekelne.