[PHP] uitvoeren script duurt lang

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bop
  • Registratie: Juni 2001
  • Laatst online: 19-08-2024

bop

VisualWeb

Topicstarter
Ik zit met een klein probleem, ik heb sinds kort een server met daarop RedHat 7.2 / Apache 1.3.2.7 / PHP 4.3.0

Het werkt opzich allemaal perfect, maar nu had ik de laatste tijd problemen met 1 scriptje, heel klein scriptje. Het basis idee: het include van een andere script MET een variabele in de link.

Basis idee van het script:
1: <?
2: echo "blablabla";
3: include("blaat.php?whoei=nietecht");
4: ?>
Het probleem:
Het werkt opzich perfect, de uitkomst en alles is goed, maar het duurt alleen 30?! seconden. Ik ben toen met microtime bezig geweest en kwam er achter dat na het include van het script, en voor het afsluiten van php (daar waar 'nix' is) hij een pauze neemt van 30 seconden.
Als ik blaat.php leeg maak, werkt het ook niet, en typ fouten moet niet vanuit worden gegaan. Als ik de include weg haal (of de variabele erin) werkt alles perfect in korte tijd.

Het is allemaal een beetje moeilijk uit te leggen, maar ik hoop dat ik het zo goed mogelijk heb gedaan.
mijn vraag is dus: Is dit een bekend problemen, en zo ja/nee iemand een idee waar dit aan ligt en/of hoe ik dit oplos?

[ Voor 6% gewijzigd door bop op 23-03-2003 21:50 ]

doe niet aan signatures.. uhhh, arghhh


Acties:
  • 0 Henk 'm!

  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05 10:49

irondog

alle dingen moeten onzin zijn

FLeSH schreef op 23 maart 2003 @ 21:48:
code:
1
2
3
4
<?
echo "blablabla";
include("blaat.php?whoei=nietecht");
?>
Ja, volgens mij is dit gewoon ram fout.

Probeer eens
code:
1
2
3
4
5
<?
echo 'blabla'; //echo is deprecated volgens mij, maja
$whoei='nietecht';
include('blaat.php');
?>

Dat vraagteken moet je alleen gebruiken in een url. Een script dat je aanroept met http dus.
Dubbele quotes kun je het best gebruiken als er dingen in staan die nog geinterpreteerd moeten worden.

het is dus:
code:
1
2
3
4
5
<?
print 'dit is een tekst';
print "en hier... \n zit een enter in";
print 'en hier zit een \n backslash n in';
?>

volgens mij zitten we ook in het verkeerde forum :)

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


Acties:
  • 0 Henk 'm!

Verwijderd

inderdaad, het is niet nodig die var door te geven naar die include, die wordt toch geparset alsof hij deel uitmaakt van het groter geheel (de pagina die de include doet), en kent dus de variabelen daarvan. (altijd makkelijk om weten,dan maak je geen 5 DBconnecties als je die ene toch overal kan gebruiken :))

Acties:
  • 0 Henk 'm!

  • bop
  • Registratie: Juni 2001
  • Laatst online: 19-08-2024

bop

VisualWeb

Topicstarter
Het probleem is dat het bijna zo wel moet, omdat de rest van het script (wat ik niet heb gemaakt) dingen uit de URL leest, met https_get_vars enzo, en ook de order var (http_get_vars) moet leeg zijn op het moment dat dat andere script geladen word.
Het was dus mijn vraag opzich, hoe ik kan zorgen dat dit include (wat op een ander level dan PHP gebeurd, als ik het goed heb) het wel goed doet :)

doe niet aan signatures.. uhhh, arghhh


Acties:
  • 0 Henk 'm!

  • Wilke
  • Registratie: December 2000
  • Nu online
Dan kun je het niet includen op de manier zoals je nu probeert; maar ik move dit sowieso naar Programming & Webscripting, want dit lijkt me wel specifiek over PHP te gaan, en niet over Linux o.i.d. :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

een url includen is sowieso niet echt een goede manier. Wat je nu doet is een php pagina opvragen dat php-code uitspuugt. Kun je dan niet beter die pagina zo bouwen dat hij gewoon gebruik maakt van een setje globale variabelen? Dan kan ie ook gewoon uitgevoerd worden door het php proces wat momenteel met je huidige script bezig is

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • bop
  • Registratie: Juni 2001
  • Laatst online: 19-08-2024

bop

VisualWeb

Topicstarter
.oisyn schreef op 24 March 2003 @ 14:14:
een url includen is sowieso niet echt een goede manier. Wat je nu doet is een php pagina opvragen dat php-code uitspuugt. Kun je dan niet beter die pagina zo bouwen dat hij gewoon gebruik maakt van een setje globale variabelen? Dan kan ie ook gewoon uitgevoerd worden door het php proces wat momenteel met je huidige script bezig is
Ik heb even samen met iemand lopen kloten idd, ik heb er het volgende van kunnen mkane (de bovenste is originele, en de onderste de nieuwe). Toch klopt er nog iets niet.. dit scriptje is dus onderdeel van een groot iets.
En het originele scriptje werkt dus wel, maar (eigenlijk niet goed). En het nieuwe scriptje geeft geen resultaten...
hoop dat het beetje duidelijk is :)

http://www.discountsmoking.net/wtf.php

doe niet aan signatures.. uhhh, arghhh


Acties:
  • 0 Henk 'm!

  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05 10:49

irondog

alle dingen moeten onzin zijn

Wat is dit nou?
code:
1
$HTTP_GET_VARS[oscsid] = $values['sessionid'];

Beetje raar hoor :) Een assosiatief array indexeer je met quotes en normaal ga je niet lopen schrijven in $HTTP_GET_VARS

Ff een tip voor het debuggen in jouw geval. Gebruik de functie flush() op een aantal plaatsen. Deze zorgt ervoor dat reeds gegenereerde code wordt verstuurd.

Mijn gezond verstand zegt dat je moet wachten op een oneindigende lus (dat zal dus wel die forlus zijn). met flush() zul je snel genoeg kunnen zien waar het fout gaat.

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


Acties:
  • 0 Henk 'm!

  • bop
  • Registratie: Juni 2001
  • Laatst online: 19-08-2024

bop

VisualWeb

Topicstarter
irondog schreef op 24 March 2003 @ 17:25:
Wat is dit nou?
code:
1
$HTTP_GET_VARS[oscsid] = $values['sessionid'];

Beetje raar hoor :) Een assosiatief array indexeer je met quotes en normaal ga je niet lopen schrijven in $HTTP_GET_VARS

Ff een tip voor het debuggen in jouw geval. Gebruik de functie flush() op een aantal plaatsen. Deze zorgt ervoor dat reeds gegenereerde code wordt verstuurd.

Mijn gezond verstand zegt dat je moet wachten op een oneindigende lus (dat zal dus wel die forlus zijn). met flush() zul je snel genoeg kunnen zien waar het fout gaat.
Klinkt inderdaad erg logisch, maar bij mij werkt flush() niet, ik had oook even gekeken op php.net naar flush() maar ik doe het toch wel goed :)

doe niet aan signatures.. uhhh, arghhh

Pagina: 1