Waarschijnlijk krijg je onder bepaalde voorwaarden een oneindige loop.quote:Op vrijdag 12 januari 2007 21:27 schreef wonderer het volgende:
[..]
Ja, dat wel...
Maar dan snap ik nog niet waarom hij dan soms loopt te mieren en meestal niet. Hij wordt wel vaak aangeroepen, kan het daaraan liggen?
En proberen te ontdekken welke voorwaarden is zeker onbegonnen werk?quote:Op vrijdag 12 januari 2007 21:42 schreef Light het volgende:
[..]
Waarschijnlijk krijg je onder bepaalde voorwaarden een oneindige loop.
Ik blijf bij een oneindige loop. Het aantal keren dat je die regel aanroept is niet zozeer het probleem, een loop die 1 keer oneindig wordt (while(true)) wel.quote:Op vrijdag 12 januari 2007 21:27 schreef wonderer het volgende:
[..]
Ja, dat wel...
Maar dan snap ik nog niet waarom hij dan soms loopt te mieren en meestal niet. Hij wordt wel vaak aangeroepen, kan het daaraan liggen?
Wat voor problemen? En wat is de query? En wat doe je met $result?quote:Heb ook problemen met $result=mysql_db_query($myDB,$query,$dblink); en een aantal dingen die daaruit voortvloeien... waar kan dat op duiden?
Neuh. Hoe is die loop? Dus wat is de for(each) of while regel van die loop waarin regel 585 zit?quote:Op vrijdag 12 januari 2007 21:44 schreef wonderer het volgende:
[..]
En proberen te ontdekken welke voorwaarden is zeker onbegonnen werk?
quote:Op vrijdag 12 januari 2007 21:45 schreef Light het volgende:
[..]
Ik blijf bij een oneindige loop. Het aantal keren dat je die regel aanroept is niet zozeer het probleem, een loop die 1 keer oneindig wordt (while(true)) wel.
[..]
Wat voor problemen? En wat is de query? En wat doe je met $result?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | $d=connectDB(); $qroom=quote_smart($kamer,$d); $qroom=make_room($qroom); $success=settype($ID,"int"); $res=runquery("SELECT * FROM chat_kamer_".$qroom." WHERE ID > '".$ID."'",$d); if(mysql_num_rows($res)!=0){ while($row=mysql_fetch_array($res)){ $id=$row["ID"]; $username=$row["username"]; $chatname=parse_chatname($row["chatname"], $username); $kleur=$row["kleur"]; $sentence=parse_sentence($row["sentence"],$row["systemmess"]); $line=lineformat($id, $chatname, $kleur, $sentence, $row["adminmess"], $username, $row["systemmess"]); $lines.=$line.'<%split%>'; $lid=$row["ID"]; } $lines=substr($lines,0,-9); $callback=$lid.'<%split%>'.$lines; return $callback; } else{ return ''; } ?> |
Hmm... ik heb hier eens naar gekeken, maar ik kan niet vinden hoe die loop oneindig kan worden.quote:Op vrijdag 12 januari 2007 22:01 schreef wonderer het volgende:
[..]
[ code verwijderd ]
$ID wordt meegegeven in de functie. Functie wordt gebruikt om te zien of er nieuwe dingen gezegd zijn en zo ja, laat ze dan zien. Wordt elke twee seconden aangeroepen via een javascript.
$result is dezelfde als $d. 't Is mijn databaseverbindingsfunctie, die dus eerst aangeroepen wordt en gebruikt voor de query en de magic quotes gedoe.
Correct. En er zijn een paar mogelijke redenen waarom 30 seconden niet genoeg is. Zo kun je gewoon zoveel code hebben gemaakt dat het niet meer binnen 30 seconden uit te voeren is door de pc. Maar da's niet waarschijnlijk.quote:Op zaterdag 13 januari 2007 00:10 schreef hornage het volgende:
jongens,
Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/path/to/chatscript.php
betekent simpelweg dat alles bewerkingen die gedaan worden om de pagina te laden meer dan 30 seconden in beslag nemen. Vanaf het moment dat de pagina aangevraagd wordt totdat ie klaar met laden is mag niet meer dan 30 seconden in een standaardinstelling.
1 2 3 4 5 6 7 | $i=0; while (true) { $i++; } echo $i; ?> |
Queries controleren is idd ook een goed plan.quote:Als dit alle code is waarin hij blijft hangen kan je even de query testen in bijvoorbeeld phpmyadmin. Als je daarin wel gewoon snel output krijgt ligt het aan je script.
Kijk wat er allemaal geladen en geiclude wordt. Dan moet je vast en zeker wel wat vinden.
Hmm.. goed puntquote:Op vrijdag 12 januari 2007 23:34 schreef wonderer het volgende:
Zijn er andere manieren om een database verbinding aan te maken?
En wat zou er bijvoorbeeld gebeuren als ID 0 was? De huidige meest recente IDs liggen rond de 500.000 (niet dat er zoveel records in zitten, maar ik laat hem doortellen).
1 2 3 4 5 6 7 8 | ( [0] => 054 [1] => 121 [2] => 232 [3] => 45822 [4] => 12 } |
quote:Op zaterdag 13 januari 2007 11:11 schreef SuperRembo het volgende:
Zoeken in een array, gokje: array_search()
Dan moet het hele OO concept beter verwerkt worden in PHP.quote:Op zaterdag 13 januari 2007 12:25 schreef JeRa het volgende:
Arrays zijn nou typisch van die dingen in PHP waarvan ik zou willen dat ze net zoals in Java als extendable class werden geïntroduceerd. Dan had je niet overal meer die losse functies als sort() en count() liggen en was bovenstaand probleem gereduceerd tot Array.indexOf() of desnoods gewoon Array.findKey().
Ik vind dat ze al een redelijke basis hebben voor OOP in PHPquote:Op zaterdag 13 januari 2007 17:19 schreef Light het volgende:
[..]
Dan moet het hele OO concept beter verwerkt worden in PHP.
Ze maken wel een nieuwe verbinding aan (zelfde weer, $d=connectDB();) in de functies... hoeft dat niet? Kan dat anders? Misschien kan ik in de functie runquery inbouwen dat ie alleen verbinding moet maken als er geen verbinding is, maar dan weet ik niet hoe ik die magic_quotes_gpc moet doen...quote:Op zaterdag 13 januari 2007 10:55 schreef JeRa het volgende:
Met die loop lijkt me zo niets mis. Doen parse_chatname() en parse_sentence() nog iets vreemds, zoals verbindingen maken met de DB en trage queries executen ofzo?
Een goede start is het doorgeven van de $db uit het hoofdscript. Die verbinding heb je namelijk al gemaakt dus dan hoeven die functies dat niet telkens opnieuw te doen. Ik heb sterk het vermoeden dat die twee functies zo slecht in elkaar zitten dat zij de oorzaak zijn van die 30+ seconden runtimequote:Op zaterdag 13 januari 2007 18:34 schreef wonderer het volgende:
[..]
Ze maken wel een nieuwe verbinding aan (zelfde weer, $d=connectDB();) in de functies... hoeft dat niet? Kan dat anders? Misschien kan ik in de functie runquery inbouwen dat ie alleen verbinding moet maken als er geen verbinding is, maar dan weet ik niet hoe ik die magic_quotes_gpc moet doen...
Heb je een linkje naar een tut waar goed wordt uitgelegd hoe je functies (en database dingen) opbouwt? Er moet best wel een hoop gedaan worden voor de zin er mooi leesbaar uit komt rollen...quote:Op zaterdag 13 januari 2007 18:49 schreef JeRa het volgende:
[..]
Een goede start is het doorgeven van de $db uit het hoofdscript. Die verbinding heb je namelijk al gemaakt dus dan hoeven die functies dat niet telkens opnieuw te doen. Ik heb sterk het vermoeden dat die twee functies zo slecht in elkaar zitten dat zij de oorzaak zijn van die 30+ seconden runtime
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | if($_POST['submit']="submit") { $id = $_POST['ID']; $datum = $_POST['datum']; $offertenummer = $_POST['offertenummer']; $ordernummer = $_POST['ordernummer']; $order = $_POST['order']; $bedrag = $_POST['bedrag']; if (is_array($id) && (count($id))) { $query = 'UPDATE (ID,datum,offertenummer,ordernummer,offerte,bedrag) VALUES (' . $id[0] . ', ' . $datum[0] . ', ' . $offertenummer[0] . ', ' . $ordertenummer[0] . ', ' . $order[0] . ', ' . $bedrag[0] . ')'; $num = count($id); for ($i = 0; $i < $num; $i++) { $query .= ',(' . $id[$i] . ', ' . $datum[$i] . ', ' . $offertenummer[$i] . ', ' . $ordernummer[$i] . ', ' . $order[$i] . ', ' . $bedrag[$i] . ')'; } mysql_query($query); } } ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |