Kavacky Posted November 5, 2008 Report Share Posted November 5, 2008 (edited) Ir kods: foreach ( $cool_array as $elem_value ) { echo 'aaa'; echo $elem_value; echo 'bbb'; } Uzskatāmības pēc viss sadalīts 3 rindiņās, darbojas arī tad, ja saraksta ar vienu echo, atdalot visu ar komatu vai arī konkatenējot. Ja rakstīts tā, kā tur tagad rakstīts - PHP visu jauki izpilda, taču ilgi nenobeidz procesu - kaut arī viss izvads jau sen ir browserī, PHP process ir dzīvs, konekcija ir vaļā un browseris pat nesāk attēlot saņemto, kaut arī View Source jau visu var apskatīt, kā arī uzrādās, ka kods no a līdz z izpildīts normālajās pārdesmit milisekundēs ( nu tur būtībā nav tikai šis kods, bet tas pārējais it kā neiespaido neko ). Aizkomentējam jebkuru no 3 echo rindiņām - un tavu brīnumu - nekas vairs neieķeras, process izpildās un momentā arī pats atmirst un viss ir bumbās. Taču tiklīdz izpildam visas 3 rindiņas, kaut kas viņam vairs nepatīk. Var likt vēl citus echo pirms un pēc tā foreach bloka ar dajebkādu saturu, tas nekādu iespaidu uz to dīvaino uzvedību arī neatstāj. Būtībā var likt arī citus foreach blokus dajebkur citur ar dažādiem citiem masīviem, nekas nenotiek. Tikai pie tā foršā masīva, kurš saturiski arī ne ar ko tādu no citiem neatšķiras ( masīvs kā masīvs, visas vērtības string tipa ) , sākas tā dīvanība. PHP versija 5.2.4. Uz citiem datoriem ar absolūti identisku servera un PHP konfigurāciju nekas neaizķeras. Pamainu versiju ( uz 5.2.6 provēju ) - tas pats. Īsumā - WTF, idejas ko PHP tur nevar sagremot, jebšu viņš tikai ienīst manu datoru? Edited November 5, 2008 by Kavacky Link to comment Share on other sites More sharing options...
bubu Posted November 6, 2008 Report Share Posted November 6, 2008 Ja šo pašu skriptu palaiž komandrindā ar php, bez webservera starpniecības, tad rezultāts tāds pats? Link to comment Share on other sites More sharing options...
Kavacky Posted November 6, 2008 Author Report Share Posted November 6, 2008 (edited) Caur komandrindu viss iziet zibenīgi visos gadījumos. Iebremzē caur FireFox 2, Operā tas ievelkas mazāk, bet ar IE lido. Edited November 6, 2008 by Kavacky Link to comment Share on other sites More sharing options...
Aleksejs Posted November 6, 2008 Report Share Posted November 6, 2008 Pamēģini ar telnetu slēgties pie servera 80 porta un izpildīt: GET /cels/uz/skriptu.php Link to comment Share on other sites More sharing options...
andrisp Posted November 6, 2008 Report Share Posted November 6, 2008 Tam gan maz sakara, bet varētu mēģināt salīdzināt headerus, ko firefox2 saņem, kad izpildi uz gļukainā servera, ar headeriem, ko firefox saņem, izpildot skriptu uz negļukainā. Link to comment Share on other sites More sharing options...
Aleksejs Posted November 6, 2008 Report Share Posted November 6, 2008 Kāda izskatās lapas HTML source? Link to comment Share on other sites More sharing options...
Kavacky Posted November 6, 2008 Author Report Share Posted November 6, 2008 Konstatējums #1: PHP pats neiebilst pret to izvadu, kā to apliecina komandrinda un telnets. Konstatējums #2: Arī iebremzējošie browseri neiebilst pret izvadu ķipa 'aaa', $var, 'bbb', bet gan izvadu '<link rel.. ļaļaļa bwah.css>'. Un tā kā šajā "projekta" stadijā tādu failu, kādu pieprasījumi HTMLā tika drukāti, nebija, viņus atrast nevarēja. Arī Apache mod_rewrite ar -f nosacījumu neko neatrada, tāpēc pasvieda uz galveno lapu un failu vietā browseris dabūja galīgi ne to, ko gaidīja, pat ne servera atbildi 404 ( 404 headeri gan šajā gadījumā iedod pati galvenā lapa, jo saņem galīgi kreisos parametrus ). Problēma faktiski solved, tā noreducējas līdz tam, ka mans PHP iebilst pret die() operatīvu izpildi un velkas uz to, kas tika novērots jau agrāk ( iekavējas kaut kas arī caur komandrindu ), pie tam arī tikai uz šīs kastes. Bet tā kā šeit die() nav paredzēts regulārs pielietojums, tad testēšanas vajadzībām netraucē. Danke, kungi. ;) Link to comment Share on other sites More sharing options...
rpr Posted November 6, 2008 Report Share Posted November 6, 2008 es ar die vienreiz ieberzos, kad tas iisti nemaaceeja integer izvadiit pie nospraagshanas. tur tikai tuuri stringu var gruust iekshaa. Link to comment Share on other sites More sharing options...
Kavacky Posted November 6, 2008 Author Report Share Posted November 6, 2008 He, man viņš iebremzē arī situācijā <?php die(); ?>. Link to comment Share on other sites More sharing options...
marrtins Posted November 6, 2008 Report Share Posted November 6, 2008 Jāmēģina ar strace skatīties ko jams tur īsti dara. Mož kāds modulis gļučī. Link to comment Share on other sites More sharing options...
Aleksejs Posted November 6, 2008 Report Share Posted November 6, 2008 Pamēģini: die(1); Link to comment Share on other sites More sharing options...
Recommended Posts