mysql en apache

ik weet niet wat het is, maar als ik in de terminal werk is mysql snel maar als ik via safari iets oproep is het zo traag als stroop terwijl het 60 graden vriest. heeft iemand een idee hoe ik die weer vlot kan trekken? ik heb 10.4.2 en mysql 4.1.11.

daan.

Ik neem aan dat je in safari een pagina met data uit MySQL laat laden? Of praten we hier over PHPMyadmin?

ik probeer een pagina met database gegevens te laden.

daan.

phpmyAdmin kan soms langzaam worden als ik een wat langer in een database werk, maar de gegevens in de webpagina's zijn er altijd snel (Safari en Firefox).

Het zou dan kunnen zijn dat je HTML niet helemaal correct is, waardoor de browser als een gek staat te rekenen om er nog wat van te bakken. Als het dan veel gegevens zijn dan kost het nodal wat rendertijd.

Ik neem aan dat je PHP gebruikt. Je kan PHP instellen of commando’s op je php pagina gebruiken waarmee je ‘tussenresultaten’ kan wegschrijven naar de browser, dan lijkt het ook sneller te gaan. Even google gebruiken daarvoor.

My best guess is de HTML: kijk daar eerst goed naar door een gegenereerde pagina op te slaan en dan via http://validator.w3.org te checken

het gaat om een aantal php querys zoals deze[code:1:9c64b50431]<?php //database acces include('conndiabetes.php'); $Query = "select round(avg(waarde),2) from $DBname.$Tablename where jaar >= 2004 and maand >= 02 and dag >=24"; $Result = mysql_query ($Query, $Link) or die("Couldn't execute query."); print ("<table border=1 width="75%" cellspacing=2 cellpadding=2 align=center>n"); print ("<tr align=center valign=top>n"); print ("<td align=center valign=top>Gemiddelde Waarde vanaf 24 februari</td>n"); print ("</tr>n");

while ($Rows = mysql_fetch_array ($Result))
{
print ("<tr align=center valign=top>n");
print ("<td align=center valign=top>$Rows[0]</td>n");
print ("</tr>n");
}
mysql_close ($Link);
print ("</table>n");

?>[/code:1:9c64b50431]
en het gaat allemaal erg traag.

daan.

Waarschijnlijker dan de HTML, is dat de PHP code niet helemaal (of helemaal niet) correct is waardoor MySQL en/of Apache er lang over doen.

Jan

ik denk dat je het een en ander zal moeten vergelijken, - de query die je in de code uitvoert direct in mysql via de terminal runnen (je hebt al een connectie met mysql, dus die hoeft alleen de query uit te voeren en weer te geven in mysql zelf) - de pagina aanroepen in safari (is natuurlijk altijd langzamer, aangezien er veel meer moet gebeuren, een apache process moet gestart worden, een php instance wordt gestart, en die moet een connectie maken met mysql (lokaal of via internet?).. een loop door alle results heen en results ophalen, de output wordt gegenereerd, en teruggestuurd naar apache, welke het dan doorstuurt naar je browser....) - de pagina aanroepen in de terminal ( php filename.php ) (je slaat hierbij het safari stukje over, dus kun je testen hoeveel dit verschilt).

Het is alleen jammer dat je code en html door elkaar heen gebruikt, waardoor die laatste optie een niet echt makkelijke optie is. Als je code en html goed van elkaar gescheiden houdt, dan is het ook stukken makkelijker om te testen of een stukje php code langzaam is… (laat het bv 1000 keer runnen)

Over het algemeen merk ik dat apache/php/mysql op mijn eigen desktop inderdaad wel wat langzamer is dan een dedicated server, maar dat maakt meestal niets uit, aangezien ik gewoon zorg dat de code al snel bij mij draait, dan weet ik zeker dat ie nog sneller op de server draait.

Hopelijk kun je hier wat mee.

Als ik ook nog even naar jouw code kijk, dan is dat ook niet de meest snelle code, gezien je elke string via een php (wel ingebouwd dan) laat parsen en doorvoeren. Een compleet overbodige en onnodige performance issue...

Door gebruik te maken van ‘’ ipv “” zeg je eigenlijk tegen php dat ie de string tussen de ‘’ letterlijk moet nemen en niet kijken of er nog $vars in staan etc… en dat is dus al sneller

Dezelfde code maar dan anders (waarom ook al die html via print doen? dan moet je toch veel te veel typen??

[code:1:483ca75d92]
<?php
//database acces
include(‘conndiabetes.php’);
$Query = ‘select round(avg(waarde),2) as waarde from ‘.$DBname.’.’.$Tablename.’ where jaar >= 2004 and maand >= 02 and dag >=24’;
$Result = mysql_query ($Query, $Link) or die(‘Couldn’t execute query.’);

?>
<table border=1 width=“75%” cellspacing=2 cellpadding=2 align=center>
<tr align=center valign=top>
<td align=center valign=top>Gemiddelde Waarde vanaf 24 februari</td>
</tr>
<?php
while ($Rows = mysql_fetch_assoc($Result)) // fetch_array zet de gegevens 2x in een array, 1x op numerical basis, en een ander met associative array, leesbaarst is om fetch_assoc te gebruiken
{
?>
<tr align=center valign=top>
<td align=center valign=top><?=$Rows[‘waarde’]?></td>
</tr>
?>
}
mysql_close ($Link);
?>
</table>
[/code:1:483ca75d92]

Als je de code meer zou willen scheiden dan zou ik het zo doen:

[code:1:483ca75d92]
<?php
//database acces
include(‘conndiabetes.php’);
$Query = ‘select round(avg(waarde),2) as waarde from ‘.$DBname.’.’.$Tablename.’ where jaar >= 2004 and maand >= 02 and dag >=24’;
$Result = mysql_query ($Query, $Link) or die(‘Couldn’t execute query.’);

$waardes = array();
while ($Rows = mysql_fetch_assoc($Result))
{
$waardes = $Rows[‘waarde’];
}
mysql_close ($Link);

// en dan nu html, dit kan je dan eventueel ook in een include stoppen
?>
<table border=1 width="75%" cellspacing=2 cellpadding=2 align=center>
<tr align=center valign=top>
<td align=center valign=top>Gemiddelde Waarde vanaf 24 februari</td>
</tr>
<? foreach($Rows as $waarde) : ?>
<tr align=center valign=top>
<td align=center valign=top><?=$waarde?></td>
</tr>
<? endforeach; ?>
</table>
[/code:1:483ca75d92]

ik weet niet hoe jij dit werkend kan krijgen, maar bij mij geven beidde scripts van jou foutmeldingen.

daan.

oeps, had een ?> ipv <? in die eerste.

[code:1:aaa5df1c6b]
<?php
//database acces
include(‘conndiabetes.php’);
$Query = ‘select round(avg(waarde),2) as waarde from ‘.$DBname.’.’.$Tablename.’ where jaar >= 2004 and maand >= 02 and dag >=24’;
$Result = mysql_query ($Query, $Link) or die(‘Couldn’t execute query.’);

?>
<table border=1 width=“75%” cellspacing=2 cellpadding=2 align=center>
<tr align=center valign=top>
<td align=center valign=top>Gemiddelde Waarde vanaf 24 februari</td>
</tr>
<?php
while ($Rows = mysql_fetch_assoc($Result)) // fetch_array zet de gegevens 2x in een array, 1x op numerical basis, en een ander met associative array, leesbaarst is om fetch_assoc te gebruiken
{
?>
<tr align=center valign=top>
<td align=center valign=top><?=$Rows[‘waarde’]?></td>
</tr>
<?
}
mysql_close ($Link);
?>
</table>
[/code:1:aaa5df1c6b]

de foutmeldingen die jij krijgt kan ik natuurlijk (vanwege de afstand denk ik ;)) niet ruiken, dus als je ze zou kunnen posten, dan kan ik kijken wat er mis gaat.. bij mij doen die scripts het natuurlijk niet omdat ik de include sowieso al niet heb... maar verder werken ze wel.

als je het zo uit safari kopieert, dan kan het zijn dat je onzichtbare tekens mee kopieert,… ik weet niet elke editor je gebruikt, maar je zou even kijken als je onzichtbare tekens aanzet of je dan rare tekens ziet… dit was vooral met oudere safari’s een groot probleem… (in BBEdit zag je dan bolletjes ipv tabs, deze moest je dan even vervangen)

alle foutmeldingen die ik kreeg van jou scripts komen in dit deel [code:1:85af9ab4d6]<table border=1 width="75%" cellspacing=2 cellpadding=2 align=center> <tr align=center valign=top> <td align=center valign=top>Gemiddelde Waarde vanaf 24 februari</td> </tr> <?php while ($Rows = mysql_fetch_assoc($Result)) // fetch_array zet de gegevens 2x in een array, 1x op numerical basis, en een ander met associative array, leesbaarst is om fetch_assoc te gebruiken { ?> <tr align=center valign=top> <td align=center valign=top><?=$Rows['waarde']?></td> </tr> <? } mysql_close ($Link); ?> </table> [/code:1:85af9ab4d6] ik weet niet of het aan jou script ligt of dat jij php5 gebruikt en ik nog 4.3.11

daan.

ah en welke errors krijg je dan?

parse error on line 11.

verder lijkt het erop dat de combi nu wel weer goed loopt, dat het toch wat foutjes in de scripts zaten. door het veranderen van computer zijn de databases wat aangepast en hierdoor klopte de php scripts niet meer 100%. het is wel raar dat het script dat gisteren erg lang op zich liet wachten nu wel snel laad, ondanks dat ik het een andere naam heb gegeven zodat het niet een cache oproep zou zijn.

daan.

(edited 14.46)

Hansen,

Kan je als test eens de volgende query proberen:

[code:1:37bf5a68e5]
$query = "select count(*) as aantal from $DBname.$Tablename";

$result = mysql_query($query, $Link);

$s .= '<p>Aantal records: ';

if ($r = mysql_fetch_array($result)) {
$s .= $r[aantal];
}
else {
$s .= ‘0’;
}
$s .= ‘</p>’;
[/code:1:37bf5a68e5]

Het kan zijn dat er een klein spelfoutje o.i.d. in zit, ik tik dit uit mijn hoofd (geen php in de buurt), maar het moet het aantal rijen in de tabel teuggeven.

De vraag is of dat snel is in safari of niet.

ik heb er dit van gemaakt en kreeg meteen een resultaat! [code:1:1fd89b9e6e]<?php //database acces include('conndiabetes.php'); $Query = "select count(*) as aantal from $DBname.$Tablename";

$Result = mysql_query($Query, $Link) or die("pech");

//resultaten uit database

while ($Rows = mysql_fetch_array ($Result))
{

print &#40;&quot;$Rows&#91;0&#93;n&quot;&#41;;

}
mysql_close ($Link);

?>[/code:1:1fd89b9e6e]
daan.

met 'meteen een resultaat' neem ik aan dat je daarmee bedoelt dat het resultaat snel op scherm stond?

If so, pas dan je query aan. Doe geen ‘count *’ maar laat eens alle waarden ophalen. Zet na iedere waarde een <br> HTML tag en bekijk dan eens of Safari nog steeds langzaam is.

ik denk toch dat er gisteren iets tegen zat te werken dat nu niet meer op de achtergrond bezig is. ik krijg meteen een pagina met de query zonder fouten.

daan.

mocht je daar weer eens last van hebben, in de utilities map staat ook nog een progje 'Activity Viewer' (hoe het in het nederlands heet weet ik niet), daar kun je zien welk process nou zo lang bezig is.. of het dus mysql is, of apache/php etc.. erg handig :)

Wanneer je ingewikkelde mysql queries maakt, dan is het ook raadzaam om instellingen in mysql te wijzigen zodat ie een log bij houdt welke ‘slow’ queries waren, maar de queries die je tot nu toe hebt gepost waren nog geen ingewikkelde queries :slight_smile: Maar het is altijd handig om te weten dat deze mogelijkheid er is voor wanneer je deze nodig hebt.