[Mysql/Php] Performance problemen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 20-09 20:01

jopiek

Tja... 'ns ff denken.

Topicstarter
Ik heb een servertje staan (1U) met FreeBSD (5.3-RELEASE) erop.

Er draaien een aantal serverprocessen waaronder Apache met php en mysql. Daarnaast nog een email servertje en voor de rest niet heel veel.

Er draaien verschillende websites op Apache:
http://www.bakspeciaal/ en http://www.legopricewatch.tk/ onder andere...

Nu laadt de eerste heel snel, de tweede is echter zodra er wat uitgebreidere queries gedaan worden af en toe zeer sloom. Ik zie dan steeds op de taakbald van Firefox: "Wachten op 213.233.222.222".

Heeft iemand enig idee waar performace issues zoals deze vooral door veroorzaakt worden? Het lijkt overigens wel aan mysql te liggen :S...

Het vage is trouwens dat phpmyadmin wel redelijk snel tot zeer snel is :s

[ Voor 12% gewijzigd door jopiek op 21-08-2005 13:17 ]

Cogito Ergo Credo


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Beetje algemene vraag. Loop je queries eens langs, kijk naar de tijden, zet wat stopwatchcode in je PHP, kijk naar geheugengebruik, onhandige loopjes etc. etc.

PHPMyAdmin laat puur je structuur zien, of gaat een moeilijke SQL query daar wel snel?

Kortom: Info info info!

[ Voor 6% gewijzigd door Voutloos op 21-08-2005 13:19 ]

{signature}


Acties:
  • 0 Henk 'm!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 20-09 20:01

jopiek

Tja... 'ns ff denken.

Topicstarter
Voutloos schreef op zondag 21 augustus 2005 @ 13:19:
Beetje algemene vraag. Loop je queries eens langs, kijk naar de tijden, zet wat stopwatchcode in je PHP, kijk naar geheugengebruik, onhandige loopjes etc. etc.

PHPMyAdmin laat puur je structuur zien, of gaat een moeilijke SQL query daar wel snel?

Kortom: Info info info!
In phpmyadmin doe ik op zich net zo veel als in de pagina zelf: de meest ingewikkelde queries zijn wat select queries dus niet echt heel spectaculair!

ik heb ff phpinfo.php public gemaakt:
http://213.233.222.222/phpinfo.php


De tabel die met name voor problemen lijkt te zorgen heeft wel 338,8 KB aan gegevens en 4.124 records, amar dat zou niet echt een probleem moeten zijn lijkt me?

[ Voor 19% gewijzigd door jopiek op 21-08-2005 13:30 ]

Cogito Ergo Credo


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Je hebt 2 sites op 1 installatie. De ene draait normaal, de andere traag ==> het ligt puur aan de site en diens DB ipv de algemene instellingen van apache.

Meer kan ik er zonder glazen bol niet van maken. :>

{signature}


Acties:
  • 0 Henk 'm!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 20-09 20:01

jopiek

Tja... 'ns ff denken.

Topicstarter
zou er wellicht een ahrdware issue zijn? de server ging net gewoon uit toen ik in phpadmin de opdracht gaf om de tabellen van de betreffende database te controleren...

't ziet er toch naar uit dat de bak zelf uit z'n neus staat te vreten:

last pid: 1200; load averages: 0.00, 0.23, 0.21 up 0+00:48:48 14:56:57
55 processes: 1 running, 54 sleeping
CPU states: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
Mem: 85M Active, 53M Inact, 27M Wired, 28M Buf, 15M Free
Swap: 432M Total, 432M Free

[ Voor 53% gewijzigd door jopiek op 21-08-2005 14:58 ]

Cogito Ergo Credo


Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Mja, als er op dat moment geen request is naar die (zware) site heeft hij weinig te doen ;)
Je kan trouwens wel zien dat er de afgelopen tijd wel wat load is geweest.

[ Voor 30% gewijzigd door Radiant op 22-08-2005 09:05 ]


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Zoals al gezegd: laat eens wat relevante code en queries zien.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 20-09 20:01

jopiek

Tja... 'ns ff denken.

Topicstarter
het is overigens wel raar dat de bak nu opeens vanmorgen uit stond, ik vrees dat een en ander met hardware te maken heeft :s

Hier is de code van de hoofdpagina die gezeur veroorzaakt...

code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
<?php require_once('Connections/lego_pwconn.php'); ?>
<?php include_once('computerating.php'); ?>
<?php 
  if (!isset($_GET['catid'])){ 
    $cat = 0;
  } else {
    $cat = $_GET['catid'];
  }
  if (!isset($_GET['supcatid'])){ 
    $supcatid = 0;
  } else {
    $supcatid = $_GET['supcatid'];
  }
  if (!isset($_GET['order'])){ 
    $orderid = 0;
  } else {
    $orderid = $_GET['order'];
  }
  if (!isset($_GET['setid'])){ 
    $set = 0;
  } else {
    $set = $_GET['setid'];
  }
?>
<?php

session_start();
header("Cache-control: private");

?>
<?php
mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_set_cat_rs = "SELECT * FROM set_category WHERE supercatid = 0 ORDER BY set_category.catnaam";
$set_cat_rs = mysql_query($query_set_cat_rs, $lego_pwconn) or die(mysql_error());

mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_num_per_cat = "SELECT set_in_shop.*, shops.* FROM set_in_shop INNER JOIN shops ON set_in_shop.shopid = shops.uid WHERE set_in_shop.tijdstmp IN (SELECT max(tijdstmp) FROM set_in_shop AS setshop WHERE setid = 2 GROUP BY setshop.shopid)";
$num_per_cat = mysql_query($query_num_per_cat, $lego_pwconn) or die(mysql_error());
$row_num_per_cat = mysql_fetch_assoc($num_per_cat);
$totalRows_num_per_cat = mysql_num_rows($num_per_cat);

mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_sets_per_cat_rs = "SELECT * FROM sets WHERE setcat = 1";
$sets_per_cat_rs = mysql_query($query_sets_per_cat_rs, $lego_pwconn) or die(mysql_error());
$row_sets_per_cat_rs = mysql_fetch_assoc($sets_per_cat_rs);
$totalRows_sets_per_cat_rs = mysql_num_rows($sets_per_cat_rs);

mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_setcatrs = "SELECT * FROM set_category WHERE supercatid = 0";
$setcatrs = mysql_query($query_setcatrs, $lego_pwconn) or die(mysql_error());
$row_setcatrs = mysql_fetch_assoc($setcatrs);
$totalRows_setcatrs = mysql_num_rows($setcatrs);

mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_set_shops = "SELECT * FROM set_in_shop WHERE setid = 1";
$set_shops = mysql_query($query_set_shops, $lego_pwconn) or die(mysql_error());
$row_set_shops = mysql_fetch_assoc($set_shops);
$totalRows_set_shops = mysql_num_rows($set_shops);

mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_shoprs = "SELECT * FROM shops";
$shoprs = mysql_query($query_shoprs, $lego_pwconn) or die(mysql_error());
$row_shoprs = mysql_fetch_assoc($shoprs);
$totalRows_shoprs = mysql_num_rows($shoprs);

mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_ketenrs = "SELECT * FROM keten";
$ketenrs = mysql_query($query_ketenrs, $lego_pwconn) or die(mysql_error());
$row_ketenrs = mysql_fetch_assoc($ketenrs);
$totalRows_ketenrs = mysql_num_rows($ketenrs);

mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_shopwaarderingrs = "SELECT * FROM shopsurvey";
$shopwaarderingrs = mysql_query($query_shopwaarderingrs, $lego_pwconn) or die(mysql_error());
$row_shopwaarderingrs = mysql_fetch_assoc($shopwaarderingrs);
$totalRows_shopwaarderingrs = mysql_num_rows($shopwaarderingrs);

mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_numsets = "SELECT count(*) as setcount FROM `sets` ";
$numsets = mysql_query($query_numsets, $lego_pwconn) or die(mysql_error());
$row_numsets = mysql_fetch_assoc($numsets);
$totalRows_numsets = mysql_num_rows($numsets);

mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_subcat = "SELECT * FROM set_category  WHERE set_category.supercatid = 0";
$subcat = mysql_query($query_subcat, $lego_pwconn) or die(mysql_error());
$row_subcat = mysql_fetch_assoc($subcat);
$totalRows_subcat = mysql_num_rows($subcat);

mysql_select_db($database_lego_pwconn, $lego_pwconn);
$query_subcatlistrs = "SELECT * FROM set_category";
$subcatlistrs = mysql_query($query_subcatlistrs, $lego_pwconn) or die(mysql_error());
$row_subcatlistrs = mysql_fetch_assoc($subcatlistrs);
$totalRows_subcatlistrs = mysql_num_rows($subcatlistrs);
?>
<script language="javascript" type="text/javascript"> 
  <!-- 
    if (top.location == self.location) {    //if page is not in its frameset
      top.location.href = "http://213.233.222.222/legopricewatch/index.html"; 
    } 
  //--> 
</script> 


<style type="text/css">
<!--
.style1 {
    font-family: Arial, Helvetica, sans-serif;
    font-weight: bold;
}
body,td,th {
    font-family: Arial, Helvetica, sans-serif;
}
.style2 {font-size: 9px}
.style3 {
    font-size: 16px;
    font-weight: bold;
    color: #333333;
}
.tabletop 
{
}
.table 
{
border-color: #CCCCCC;
border-style: solid;
border-bottom-width: 0px;
border-left-width: 1px;
border-right-width: 1px;
border-top-width: 1px;
}
.style5 {color: #333333}
a:link {
    color: #333333;
}
a:visited {
    color: #666666;
}
a:hover {
    color: #000000;
}
body {
    background-color: #CBCBCB;
}
.style6 {
    font-size: 12px;
    font-weight: bold;
}

-->
</style>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>LEGO Pricewatch</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php 
 /* $orderby = "";
  switch ($orderid) {
    case 0 : $orderby = "";
    case 1 : $orderby = " ORDER BY naam";
    case 2 : $orderby = "";
*/
?>
<table width="100%" height="100%" border="0">
  <tr>
    <td width="98%"><p class="style1"><a href="index.php">LEGO Pricewatch</a>

    <?php 
        if (($cat != 0) && ($set != 0)) {
          $query_num_per_cat = "SELECT * FROM set_category WHERE uid = " . $cat . " ORDER BY catnaam";
          $num_per_cat = mysql_query($query_num_per_cat, $lego_pwconn) or die(mysql_error());
          $row_num_per_cat = mysql_fetch_assoc($num_per_cat);
          $cat_naam = $row_num_per_cat['catnaam']; 
          echo " / <a href=index.php?catid=" . $cat . ">" . $cat_naam . "</a>";
        }
    ?>
    </p>
      <span class="style6">Aantal beschikbare sets: <?php echo $row_numsets['setcount']; ?></span><BR></td>
  </tr>
  <tr>
    <td colspan="2">
<?php if ($cat == 0) { ?>
<table width="75%" border="0" cellpadding="0" cellspacing="0" class="table">
  <tr>
    <td bgcolor="#999999"><table width="100%"  border="0">
      <tr>
        <th width="64%" scope="col"><div align="left"><span class="style3">Categorie</span></div></th>
        <?php if ($_SESSION["access"] == "granted") { ?>
          <th width="36%" scope="col"><a href="catinsert.php">[img]"images/addicon.gif"[/img]</th>
        <?php } ?>
     </tr>
     </table>
    </td>
  </tr>
  <tr>
    <td><?php while ($row_set_cat_rs = mysql_fetch_assoc($set_cat_rs)) { 
      $query_num_per_cat = "SELECT * FROM sets WHERE setcat = " . $row_set_cat_rs['uid'];
      $num_per_cat = mysql_query($query_num_per_cat, $lego_pwconn) or die(mysql_error());  
      $num_sets_voor_cat = mysql_num_rows($num_per_cat);    

        //uitvissen of er categorieen zijn welke de huidige categorie als super hebben...
      $query_subcat = "SELECT * FROM set_category  WHERE set_category.supercatid = " . $row_set_cat_rs['uid'];
      $subcat = mysql_query($query_subcat, $lego_pwconn) or die(mysql_error());
      $row_subcat = mysql_fetch_assoc($subcat);
      $totalRows_subcat = mysql_num_rows($subcat);        
      ?>
      <table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <?php if (($totalRows_subcat == 0) && ($num_sets_voor_cat == 0) && ($_SESSION["access"] != "granted")) { ?>
            <td width="45%" bgcolor="#CCCCCC" class="tabletop style5"><?php echo $row_set_cat_rs['catnaam']; ?></td>
          <?php } else { ?>       
            <td width="34%" bgcolor="#CCCCCC" class="tabletop style5"><a href="index.php?catid=<?php echo $row_set_cat_rs['uid']; ?>"><?php echo $row_set_cat_rs['catnaam']; ?></a></td>          
          <?php } ?>
          <td width="21%" bgcolor="#CCCCCC" class="tabletop"><div align="center"><span class="style5"><?php echo $num_sets_voor_cat; ?></span></div></td>
        </tr>
      </table>
      <?php } ?>
</td></tr>
<td>&nbsp; 
</td>
<?php } elseif ($set == 0) { 

$query_num_per_cat = "SELECT * FROM sets WHERE setcat = " . $cat . " ORDER BY setno";
$num_per_cat = mysql_query($query_num_per_cat, $lego_pwconn) or die(mysql_error());
$row_num_per_cat = mysql_fetch_assoc($num_per_cat);
$totalRows_num_per_cat = mysql_num_rows($num_per_cat);

$query_setcatrs = "SELECT * FROM set_category WHERE uid = " . $cat . " ORDER BY catnaam";
$setcatrs = mysql_query($query_setcatrs, $lego_pwconn) or die(mysql_error());
$row_setcatrs = mysql_fetch_assoc($setcatrs);
$totalRows_setcatrs = mysql_num_rows($setcatrs);

$query_subcat = "SELECT * FROM set_category WHERE set_category.supercatid = " . $cat . " ORDER BY catnaam";
$subcat = mysql_query($query_subcat, $lego_pwconn) or die(mysql_error());
$row_subcat = mysql_fetch_assoc($subcat);
$totalRows_subcat = mysql_num_rows($subcat);          

$query_subcatlistrs = "SELECT * FROM set_category where (uid = " . $cat . ")";
$subcatlistrs = mysql_query($query_subcatlistrs, $lego_pwconn) or die(mysql_error());
$row_subcatlistrs = mysql_fetch_assoc($subcatlistrs);
//$totalRows_subcatlistrs = mysql_num_rows($subcatlistrs);
$catlist = '<a href=index.php?catid=' . $row_subcatlistrs['uid'] . '>' . $row_subcatlistrs['catnaam'] . '</a>';
?>
<?php while ($row_subcatlistrs['supercatid'] != 0) { 
        //if ($row_subcat['supercatid'] != 0) {
          $query_subcatlistrs = "SELECT * FROM set_category where uid = " . $row_subcatlistrs['supercatid'];
          $subcatlistrs = mysql_query($query_subcatlistrs, $lego_pwconn) or die(mysql_error());
          $row_subcatlistrs = mysql_fetch_assoc($subcatlistrs);
        //}
        $catlist = '<a href=index.php?catid=' . $row_subcatlistrs['uid'] . '>' . $row_subcatlistrs['catnaam'] . '</a> > ' . $catlist;
      }
?>
<table width="75%" border="0" cellpadding="0" cellspacing="0" class="table">
  <tr>

    <td>
      <table width="100%"  border="0">
        <tr>
          <td  bgcolor="#999999" class="style3">Overzicht van subcategoriëen van <?php echo $catlist; ?></td>
        </tr>
        <tr>
          <td><table width="100%" border="0">
            <?php //eerst alle subsets proberen te tonen
              if ($row_subcat['uid'] != "") { do { 
            ?>
            <tr>
              <td><a href="index.php?catid=<?php echo $row_subcat['uid']; ?>"><?php echo $row_subcat['catnaam']; ?></a></td>
              <td>&nbsp;</td>
            </tr>
            <?php } while ($row_subcat = mysql_fetch_assoc($subcat)); } else { ?>
            <tr>
              <td>(Geen subcategoriëen voor deze categorie)</td>
              <td>&nbsp;</td>
            </tr>
          </table></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
        </tr>
      </table>
      <table width="100%"  border="0">
        <tr>
         <th scope="col"  bgcolor="#999999"><div align="left"><span class="style3">Sets in de categorie: <?php echo $row_setcatrs['catnaam']; ?></span></div></th>
          <?php if ($_SESSION["access"] == "granted") { ?>
             <th scope="col" bgcolor="#999999"><a href="setsinsert.php?catid=<?php echo $row_setcatrs['uid']; ?>">[img]"images/addicon.gif"[/img]</a></th>
          <?php } ?>
       </tr>
     </table>   </td>
  </tr>
  <tr>
    <td bgcolor="#cccccc">
      <table width="100%" border="0">
        <tr>
          <td>&nbsp;</td>
          <td>Setno</td>
          <td>Naam</td>
          <td>Laagste prijs</td>
          <td>Update</td>
        </tr>


      <?php if ($row_num_per_cat['uid'] != "") do { ?>
      <?php 
        $query_set_shops = "SELECT MIN(prijs) FROM set_in_shop WHERE setid = " . $row_num_per_cat['uid'];
        $set_shops = mysql_query($query_set_shops, $lego_pwconn) or die(mysql_error());
        $row_set_shops = mysql_fetch_assoc($set_shops);
        $min_prijs = $row_set_shops['MIN(prijs)'];      
        
        $query_set_shops = "SELECT MAX(tijdstmp) FROM set_in_shop WHERE setid = " . $row_num_per_cat['uid'];
        $set_shops = mysql_query($query_set_shops, $lego_pwconn) or die(mysql_error());
        $row_set_shops = mysql_fetch_assoc($set_shops);
        $updated = $row_set_shops['MAX(tijdstmp)'];
        $year = substr($updated,0,4); 
        $month = substr($updated,5,2); 
        $day = substr($updated,8,2); 
        $updated = $day . "-" . $month . "-" . $year;
        
//      $query_set_shops = "SELECT * FROM set_in_shop WHERE setid = " . $row_num_per_cat['uid'];
        $query_set_shops = "SELECT DISTINCT set_in_shop.shopid, set_in_shop.prijs, set_in_shop.user, set_in_shop.tijdstmp, set_in_shop.directurl, set_in_shop.setid, set_in_shop.is_shop FROM set_in_shop WHERE setid = " . $row_num_per_cat['uid'] . " GROUP BY shopid";
        $set_shops = mysql_query($query_set_shops, $lego_pwconn) or die(mysql_error());
        $row_set_shops = mysql_fetch_assoc($set_shops);
        $num_shops = mysql_num_rows($set_shops);
      
      ?>
        <tr>
          <td><?php if (isset($num_shops)) { echo $num_shops; } else { echo "-"; } ?></td>
          <td><?php 
               echo $row_num_per_cat['setno'];       
             ?>
          </td>
          <td><a href="index.php?catid=<?php echo $cat; ?>&setid=<?php echo $row_num_per_cat['uid'];?>"><?php echo $row_num_per_cat['setnaam']; ?></a></td>
          <td>€ <?php if (isset($min_prijs)) { echo $min_prijs; } else { echo "0,00"; } ?></td>
          <td><?php if (isset($updated)) { echo $updated; } else { echo "00-00-0000"; } ?></td>
          <td><?php if ($row_num_per_cat['peeronlink'] != '')  echo '<a href="' . $row_num_per_cat['peeronlink'] . '" target="_blank">' . Peeron . '</a>' ?></td>
        </tr>
      <?php } while ($row_num_per_cat = mysql_fetch_assoc($num_per_cat)); ?>

<?php }} else {
?>
<?php
    if ($set != "") {
    $query_num_per_cat = "SELECT * FROM sets WHERE uid = " . $set;
    $num_per_cat = mysql_query($query_num_per_cat, $lego_pwconn) or die(mysql_error());
    $row_num_per_cat = mysql_fetch_assoc($num_per_cat);
    $setno = $row_num_per_cat['setno'];
    $set_descr = $row_num_per_cat['setnaam'];
    $peeronline = $row_num_per_cat['peeronlink'];


     
    //hier loopt de lus ook overheen!!!
    //$query_num_per_cat = "SELECT set_in_shop.*, shops.* FROM set_in_shop, shops WHERE (set_in_shop.shopid = shops.uid) and (setid = " . $set . ") order by set_in_shop.Prijs ASC";
    //$query_num_per_cat = "SELECT set_in_shop.*, shops.* FROM set_in_shop, shops WHERE (set_in_shop.shopid = shops.uid) and (setid = " . $set . ") GROUP BY set_in_shop.shopid HAVING tijdstmp = max(tijdstmp)";
    $query_num_per_cat = "SELECT DISTINCT set_in_shop.setid, set_in_shop.prijs, set_in_shop.user, set_in_shop.tijdstmp, set_in_shop.directurl, set_in_shop.shopid, set_in_shop.is_shop, set_in_shop.archief, shops.* 
                          FROM set_in_shop INNER JOIN shops ON set_in_shop.shopid = shops.uid
                          WHERE (setid = " . $set . ") and (set_in_shop.tijdstmp IN (SELECT max(tijdstmp)
                          FROM set_in_shop AS setshop
                          WHERE setid = " . $set . " GROUP BY setshop.shopid))
                          ORDER BY set_in_shop.Prijs";

    $num_per_cat = mysql_query($query_num_per_cat, $lego_pwconn) or die(mysql_error());
    $row_num_per_cat = mysql_fetch_assoc($num_per_cat);
    $totalRows_num_per_cat = mysql_num_rows($num_per_cat);
    }
?>
<table width="75%" border="0" cellpadding="0" cellspacing="0" class="table">
  <tr>
    <td bgcolor="#999999"><table width="100%"  border="0">
      <tr>
        <th scope="col"><div align="left"><span class="style3">Overzicht voor set <?php echo $setno; ?> / <?php echo $set_descr; ?></span></div></th>
        <th scope="col">
          <?php if ($peeronline != '') {
                   echo '<a href="' . $peeronline . '" target="_blank">[img]"images/peeronlogo.gif"[/img]</a>';
                } else {
                   echo '[img]"images/nopeeronlogo.gif"[/img]';                 
                }
          ?>            
          <?php ?>
        </th>
      </tr>
    </table>
   </td>
  </tr>
  <tr>
    <td bgcolor="#cccccc">
      <table width="100%" border="0">
        <tr>
          <td>&nbsp;</td>
          <td>Winkel</td>
          <td>Keten</td>
          <td>Prijs</td>
          <td>Postcode</td>
          <td>Woonplaats</td>
          <td>Update</td>
          <td>
             <?php if ($_SESSION["access"] == "granted") { 
                        $addlnk =  'prijsinsert.php?catid=' . $cat . '&setid=' . $set;
                        include("menubalkje_t.php");
                    } else { 
                        echo "&nbsp;"; 
                    } 
              ?>
          </td>
        </tr>
      <?php if ($row_num_per_cat['shopid'] != "") do { 
        if ($row_num_per_cat['archief'] == 0) {
      ?>
      <?php 
      
        
        $query_shoprs = "SELECT * FROM shops WHERE uid = " . $row_num_per_cat['shopid'];
        $shoprs = mysql_query($query_shoprs, $lego_pwconn) or die(mysql_error());
        $row_shoprs = mysql_fetch_assoc($shoprs);
        $totalRows_shoprs = mysql_num_rows($shoprs);

        $updated = $row_num_per_cat['tijdstmp'];
        $year = substr($updated,0,4); 
        $month = substr($updated,5,2); 
        $day = substr($updated,8,2); 
        $updated = $day . "-" . $month . "-" . $year;
        
        $query_ketenrs = "SELECT * FROM keten where uid = " . $row_shoprs['keten'];
        $ketenrs = mysql_query($query_ketenrs, $lego_pwconn) or die(mysql_error());
        $row_ketenrs = mysql_fetch_assoc($ketenrs);
        $totalRows_ketenrs = mysql_num_rows($ketenrs);      

          
          $keten = $row_ketenrs['naam'];
          if ($keten == "") {
            $keten = "N.v.t.";
          }
          if ($row_ketenrs['url'] != "") {
            $keten = "<a href=" . $row_ketenrs['url'] . " target=_blank>" . $keten . "</a>";
          }
          $shop = $row_num_per_cat['naam'];
          if ($row_num_per_cat['directurl'] != "") {
            $shop = "<a href=" . $row_num_per_cat['directurl'] . " target=_blank>" . $shop . "</a>";
          }     
          $query_shopwaarderingrs = "SELECT * FROM shopsurvey WHERE shopid = " . $row_num_per_cat['shopid'];
          $shopwaarderingrs = mysql_query($query_shopwaarderingrs, $lego_pwconn) or die(mysql_error());
          $row_shopwaarderingrs = mysql_fetch_assoc($shopwaarderingrs);
          $shopwaardering = getshopwaarderingdefault();
          if ($row_shopwaarderingrs['service'] != "") {
          
            $shopwaardering = computerating($row_shopwaarderingrs['service'],  $row_shopwaarderingrs['alg_indruk'], $row_shopwaarderingrs['vakkundigheid'], $row_shopwaarderingrs['assortiment']);
          //$row_shoprs['waardering'];
          }
          $shopwaardering = '<a href="shopreview.php?shopid=' . $row_num_per_cat['shopid'] . '">' . $shopwaardering . '</a href>';
        ?>
        <tr>
          <td><?php echo $shopwaardering ?></td>
          <td><?php echo $shop ?></td>
          <td><?php echo $keten; ?></td>    
          <td>€ <?php echo $row_num_per_cat['prijs']; ?></td>
          <td><?php echo $row_shoprs['postcode']; ?></td>
          <td><?php echo $row_shoprs['woonplaats']; ?></td>
          <td><?php if (isset($updated)) { echo $updated; } else { echo "00-00-0000"; } ?></td>
          <td><?php if ($_SESSION["access"] == "granted") { 
                        //variabelen setten
                        //$editlnk =  "editsetinshop.php?setid=" . $set . "&shopid=" . $row_num_per_cat['shopid'];
                        //$dellnk =  "delete.php?setid=" . $set . "&shopid=" . $row_num_per_cat['shopid'];
                        //include("menubalkje_wv.php");
                    } else { 
                        echo "&nbsp;"; 
                    } 
              ?>
          </td>
        </tr>
      <?php }} while ($row_num_per_cat = mysql_fetch_assoc($num_per_cat)); ?>
<?php } ?>

</table>
</td></tr></table>
<hr noshade>
      <span class="style2">JKSOFT Engineering 2005
      <?php if ($_SESSION["access"] == "granted") { ?>
        <a href="editor.php">Pricewatch editor</a>    
      <?php } ?>

      </span>
</body>
</html>
<?php
mysql_free_result($set_cat_rs);

mysql_free_result($num_per_cat);

mysql_free_result($sets_per_cat_rs);

mysql_free_result($setcatrs);

mysql_free_result($set_shops);

mysql_free_result($shoprs);

mysql_free_result($ketenrs);

mysql_free_result($shopwaarderingrs);

mysql_free_result($numsets);

mysql_free_result($subcat);

mysql_free_result($subcatlistrs);
?>


Ik hoor overigens ook een verandering in de ventilatie als ik een request doe...

[ Voor 41% gewijzigd door jopiek op 22-08-2005 10:45 ]

Cogito Ergo Credo


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Ik denk dat de vele database activiteit de vertragende factor is. Je hebt bijna 30 afzonderlijke queries waarvan een aantal in een loop. SQL queries in een loop uitvoeren is bijna altijd een ernstige performance bottleneck. Ik zou als eerste proberen de loop eruit te halen, en te kijken of dit met een enkele query kan. Je moet ook even alle queries afzonderlijk bekijken om te zien of er queries bij zitten die slecht presteren, misschien heb je niet de juiste indexen aangemaakt op de tabellen.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Een willekeurige query (regel 36) :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# waarom elke keer select_db?
mysql_select_db($database_lego_pwconn, $lego_pwconn);

#waarom alle (*) velden ophalen? Gebruik je deze ook echt allemaal?
$query_num_per_cat = "SELECT set_in_shop.*, shops.* 
FROM set_in_shop 
INNER JOIN shops ON set_in_shop.shopid = shops.uid 
WHERE set_in_shop.tijdstmp IN (
SELECT max(tijdstmp) 
FROM set_in_shop AS setshop 
WHERE setid = 2 
GROUP BY setshop.shopid
)";
$num_per_cat = mysql_query($query_num_per_cat, $lego_pwconn) or die(mysql_error());

#krijg je maar 1 resultaat terug?
$row_num_per_cat = mysql_fetch_assoc($num_per_cat);

$totalRows_num_per_cat = mysql_num_rows($num_per_cat);

Acties:
  • 0 Henk 'm!

Verwijderd

Even je code vluchtig door gekeken en ik ben ook geen php-koning, maar is het noodzakelijk om tich keer mysql_select_db() te doen als je telkens dezelfde database selecteerd. En kun je resulten ook niet eerder freeën dan helemaal aan het eind? en moet je de verbinding met de database helemaal aan het eind niet weer verbreken? Zijn er geen queries die je kunt samenvoegen tot één? Zitten er queries tussen die als je ze exact overneemt in phpMyAdmin ook traag zijn? Heb je er aan gedacht indexen te zetten op data die je vaker opvraagt?

Overigens, als ik een query maak waar ik maar één resultaat uit krijg, zet ik er voor de handigheid LIMIT 1 achter. Ik weet niet wat het effect ervan met performance is, maar het maakt in de code altijd duidelijk waarom ik iets anders doe dan anders.

[ Voor 20% gewijzigd door Verwijderd op 22-08-2005 11:06 ]


Acties:
  • 0 Henk 'm!

Verwijderd

^^ /me is with the daddy

Je haalt ontzettend veel gegevens op in bakken met losse queries die ook van begin tot einde open staan, dus gedurende de looptijd van de PHP code resources opvreet. Dit moet echt wel veel efficienter kunnen, want de schaalbaarheid is nu absoluut 0. Ook include je nog wat PHP files waarin misschien ook nog allerlei dingen inefficient gebeuren.

Je lijkt ook alle functionaliteit in 1 pagina gebouwd te hebben, terwijl je beter losse, special purpose pagina's kan bouwen die alleen opvragen wat ze nodig hebben. Nu vraag je alles op en gebruik je slechts een fractie van die gegevens.

Ik denk dat je nog eens in de PHP tutorials zal moeten duiken mbt het opzetten van een website, want dit is uitermate inefficient.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Ik zie hier meerdere 'n+1 select' problemen. Ooit wel eens aan joins gedacht in je queries?

Zet voor de gein eens helemaal bovenaan je pagina
PHP:
1
$uitgevoerdeQueries = 0;

en zet na elke regel met een mysql_query
PHP:
1
$uitgevoerdeQueries++;

(ff met search kijken of je ze allemaal meeneemt) Vervolgens zet je onderaan
PHP:
1
echo $uitgevoerdeQueries

om vervolgens zelf ook te zien waarom deze pagina redelijk zwaar is mbt DB activiteit.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 20-09 20:01

jopiek

Tja... 'ns ff denken.

Topicstarter
De basis is Dreamweavercode. Ik gebruik deze omdat ik remote werk en Dreamweaver doet dat perfect. Echter is het grote nadeel dat je dus ook dergelijke rare constructies hebt om bovenaan alle databases te 'declareren'.

Voor de rest wordt overigens echt niet alle code uitgevoerd, alleen als het nodig is wordt een stuk uitgevoerd (los van het 'declaratiedeel'.

Ik kan echter niets anders dan Dreamweaver gewoon steeds mysql_select_db($database_lego_pwconn, $lego_pwconn); laten uitvoeren anders wordt alle code helemaal in de war geschopt...

Ik ben toch bang dat het een hardware probleem is, ik ben er wel van movertuigd dat een en ander veel efficienter kan, echter deed de pagina het een week geleden gewoon en doet ie het nu niet meer... Daarnaast crasht de server en er zit toch een 256 Mb intern geheugen en een Athlon XP processor in, dat op FreeBSD zou ruim voldoende moeten zijn.

[ Voor 26% gewijzigd door jopiek op 22-08-2005 11:49 ]

Cogito Ergo Credo


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
jopiek schreef op maandag 22 augustus 2005 @ 11:44:Ik kan echter niets anders dan Dreamweaver gewoon steeds mysql_select_db($database_lego_pwconn, $lego_pwconn); laten uitvoeren anders wordt alle code helemaal in de war geschopt...
Doe toch maar, dan maar geen Dreamweaver. Als je de verkeerde tools gebruikt of je tools verkeerd gebruikt vraag je gewoon om problemen. Een andere oplossing is er simpelweg niet.

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Niet persoonljk opvatten, maar als je alleen met dreamweaver code kan genereren moet je eerst maar eens PHP leren. Op den duur loop je tegen zaken aan die je moet finetunen om bijvoorbeeld de snelheid aceptabel te maken. Om dit te doen moet je wel de kennis hebben. Op het internet zijn erg veel tutorials te vinden, succes :)

Heb je de tip van Janoz nog uitgevoerd? Hoeveel queries werden er uitgevoerd?

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 20-09 20:01

jopiek

Tja... 'ns ff denken.

Topicstarter
P_de_B schreef op maandag 22 augustus 2005 @ 11:48:
Niet persoonljk opvatten, maar als je alleen met dreamweaver code kan genereren moet je eerst maar eens PHP leren. Op den duur loop je tegen zaken aan die je moet finetunen om bijvoorbeeld de snelheid aceptabel te maken. Om dit te doen moet je wel de kennis hebben. Op het internet zijn erg veel tutorials te vinden, succes :)

Heb je de tip van Janoz nog uitgevoerd? Hoeveel queries werden er uitgevoerd?
Janoz tip werkt niet aangezien de pagina niet meer laadt. De server kan het gewoon niet meer aan om de een of andere reden.

Daarnaast kan ik echt wel php, ik gebruik dreamweaver puur voor de layout en het feit dat ik geen zin heb steeds te uploaden met ws_ftp o.i.d. Daarnaast kan dreamweaver via een handigheidje op localhost werken en zo kan ik dus ook in dreamweaver zelf queries testen. Ik vind het jammer dat dreamweaver geen betere code genereert, maar beter dit dan UltraEdit. Het wel of niet gebruiken van een IDE achtige omgeving is imho een soort van religieuze overtuiging, ik ben voorstander van IDE's ook al zijn er ook wel voordelen te noemen m.b.t. UltraEdit of notepad.
Overigens is de pagina een niet weggegooid prototype, dus idd zou ik 'm beter ff een keertje handigmatig opnieuw kunnen schrijven, maar aangezien ik verwacht dat e.e.a. te maken heeft met hardware zal dat voorlopig er wel niet inzitten. Ik zal eerst alle server data en server script maar eens gaan backuppen.

[ Voor 9% gewijzigd door jopiek op 22-08-2005 11:55 ]

Cogito Ergo Credo


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Als ik zo'n pagina moest serveren zou ik er als server ook uit protest mee ophouden...

Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

NOFI, maar er worden bakken met suggesties gegeven, en jij zegt: nee dat is het niet (zonder te testen) en zegt daarbij ook nog eens dat generated code 'beter' is dan handgeschreven code. Ouch.

Echt, dude, zoveel queries op een enkele pagina, lijkt me niet gezond. Al helemaal niet zoals ze er nu uitzien.

Edit: Bosmonster, you read my mind. :Y)

[ Voor 9% gewijzigd door Cavorka op 22-08-2005 12:01 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

Verwijderd

Ik doe dit soort dingen zelf liever in notepad++, maar zelfs al zou ik dreamweaver gebruiken, zou ik nog niet afhankelijk zijn van wat dreamweaver genereert. Dat ten eerste.

Ten tweede declareer je een hoop en houd je het onnodig lang vast. Alles wat je declareert, alles wat je onthoudt, kost resources. Ook al doet een server het gros van de tijd niets, als je opeens meer komt declareren dan dat zo'n server in resources onder kan brengen gaat je server simpelweg plat of erg traag worden. Als je server wel voldoende capaciteit heeft duurt het nog lang omdat het doen van declaraties en daarmee het aanvragen van resources simpelweg tijd kost.
Dan je communicatie met MySQL. Binnen je server is MySQL een extern programma wat naast je php-webserver draait. Als je daartussen veel verbindingen open zet, onnodig open laat staan, onnodig veel data heen en weer pompt dan kost dat nog veel meer resources.
Tot slot is MySQL een database. Databasen kunnen erg complex worden. Met SQL kun je daar snel en efficient in zoeken. Als je enorm veel inefficiente queries invoert zwengel je als het ware zo'n complexe database onnodig vaak aan om onnodig ingewikkelde dingen te doen. Kost allemaal recourses.
Je zou de site voor de grap eens op een snellere server moeten zetten. Misschien dat die niet plat gaat maar ik kan me niet voorstellen dat die site daar wel snel draait. Wellicht is de hardware van je server ook wel gaar, daar kan ik weinig over zeggen, maar met zulke code help je de boel niet echt.

Acties:
  • 0 Henk 'm!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 20-09 20:01

jopiek

Tja... 'ns ff denken.

Topicstarter
Cavorka schreef op maandag 22 augustus 2005 @ 12:01:
NOFI, maar er worden bakken met suggesties gegeven, en jij zegt: nee dat is het niet (zonder te testen) en zegt daarbij ook nog eens dat generated code 'beter' is dan handgeschreven code. Ouch.

Echt, dude, zoveel queries op een enkele pagina, lijkt me niet gezond. Al helemaal niet zoals ze er nu uitzien.

Edit: Bosmonster, you read my mind. :Y)
Het moet makkelijkkunnen, ik heb ook keurig uitgelegd waarom ik een en ander zo doe, ik ga de pagina opschonen, maar dan doet ie het ws. nog net zo brak. Overigens worden de queries an sich zeer minimalistisch uitgevoerd, nergens voer ik joins etc. uit dus het zou verdraaid snel moeten kunnen.

Eigenlijk was een en andere overigens een experiment om met zo weinig mogelijk verschillende pagina's iets voor elkaar te krijgen, wellicht is het handiger om voor het overzicht categorie en setprijs uit te splitsen.

[ Voor 14% gewijzigd door jopiek op 22-08-2005 12:10 ]

Cogito Ergo Credo


Acties:
  • 0 Henk 'm!

Verwijderd

jopiek schreef op maandag 22 augustus 2005 @ 12:08:
[...]


Het moet makkelijkkunnen, ik heb ook keurig uitgelegd waarom ik een en ander zo doe, ik ga de pagina opschonen, maar dan doet ie het ws. nog net zo brak. Overigens worden de queries an sich zeer minimalistisch uitgevoerd, nergens voer ik joins etc. uit dus het zou verdraaid snel moeten kunnen.
Je kan anders veel beter één query met een join hebben dan twee zonder die je in php aan elkaar gaat lopen lijmen. Overigens, blijft het een feit dat je ene website wel snel is en je andere niet. Maar als je er van overtuigd bent dat het een hardware-probleem is kun je natuurlijk altijd alle processen uitgooien, een benchmarkje draaien en vergelijken met server met dezelfde power ;)
Feit blijft ook dat alles wat hierboven gezegd is waar is.
Eigenlijk was een en andere overigens een experiment om met zo weinig mogelijk verschillende pagina's iets voor elkaar te krijgen, wellicht is het handiger om voor het overzicht categorie en setprijs uit te splitsen.
De kunst van software ontwikkeling is om complexiteit op te schalen in kleinere beter te managen stukjes. Daarom wil je (bijna) nooit zo weinig mogelijk pagina's.

[ Voor 23% gewijzigd door Verwijderd op 22-08-2005 12:13 ]


Acties:
  • 0 Henk 'm!

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 16-09 10:29

Apache

amateur software devver

jopiek schreef op maandag 22 augustus 2005 @ 11:53:
[...]


Janoz tip werkt niet aangezien de pagina niet meer laadt. De server kan het gewoon niet meer aan om de een of andere reden.

Daarnaast kan ik echt wel php, ik gebruik dreamweaver puur voor de layout en het feit dat ik geen zin heb steeds te uploaden met ws_ftp o.i.d. Daarnaast kan dreamweaver via een handigheidje op localhost werken en zo kan ik dus ook in dreamweaver zelf queries testen. Ik vind het jammer dat dreamweaver geen betere code genereert, maar beter dit dan UltraEdit. Het wel of niet gebruiken van een IDE achtige omgeving is imho een soort van religieuze overtuiging, ik ben voorstander van IDE's ook al zijn er ook wel voordelen te noemen m.b.t. UltraEdit of notepad.
Overigens is de pagina een niet weggegooid prototype, dus idd zou ik 'm beter ff een keertje handigmatig opnieuw kunnen schrijven, maar aangezien ik verwacht dat e.e.a. te maken heeft met hardware zal dat voorlopig er wel niet inzitten. Ik zal eerst alle server data en server script maar eens gaan backuppen.
tijd van het backuppen & hardware checken gaat hoogstwaarschijnlijk compleet verloren zijn (normaal moet je backuppen automatisch laten uitvoeren btw).

Er zijn genoeg mensen hier, en ik zal het nogmaals beamen en in een wat bottereduidelijkere context plaatsen: "je code zuigt en het is normaal dat die traag is".

Vreselijk irriterend dat mensen hier om raad komen vragen ze veel response krijgen en dan al die goede raad in de wind slaan ...

If it ain't broken it doesn't have enough features


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Nou, na jouw goede analyse van de gegeven antwoorden moet het wel hardware gerelateerd zijn. Het kan immers niet in je code zitten, ondanks dat een aantal mensen dit zeggen, en ondanks het feit dat een andere site op dezelfde server het wel goed doet.

Misschien moet je een move naar Overige Hardware oid aanvragen?

[/sarcasme]

Serieus, een aantal mensen geeft aan wat het probleem kan zijn, maar zonder dat verder te bekijken en te testen wijs je alles van de hand. Als je wel weet wat het probleem is, waarom vraag je het dan hier?

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 20-09 20:01

jopiek

Tja... 'ns ff denken.

Topicstarter
jopiek schreef op maandag 22 augustus 2005 @ 12:08:
[...]


Eigenlijk was een en andere overigens een experiment om met zo weinig mogelijk verschillende pagina's iets voor elkaar te krijgen, wellicht is het handiger om voor het overzicht categorie en setprijs uit te splitsen.
Lijkt me dat ik dan toch wel plannen had om e.e.a. in ogenschouw te nemen niet?

[ Voor 27% gewijzigd door jopiek op 22-08-2005 12:33 ]

Cogito Ergo Credo


Acties:
  • 0 Henk 'm!

Verwijderd

jopiek schreef op maandag 22 augustus 2005 @ 12:33:
[...]


Lijkt me dat ik dan toch wel plannen had om e.e.a. in ogenschouw te nemen niet?
Bij mij komt het als volgt over:"Ik doe het wel, maaaar ik geloof jullie niet".

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Mijn tip werkt perfect, alleen werkt je pagina niet meer. Moet je niet de schult aan mijn tip geven ;)
Overigens worden de queries an sich zeer minimalistisch uitgevoerd, nergens voer ik joins etc. uit dus het zou verdraaid snel moeten kunnen.
Ik neem aan dat je zelf ook wel snapt dat
code:
1
2
3
q = select * from a join b on a.bId = b.id
while q has result
  fetch q

een stuk sneller werkt dan
code:
1
2
3
4
5
q1 = select * from a
while q1 has results
  fetch q1.bid
  q2 select * from b where id = q1.bid
  fetch q2


--edit--

Nadat ik nog even ietsje langer in je code heb gekeken zie ik niet alleen 'n+1 select'-s, maar zelfs '2n + 1 select'-s. Vul voor n het totaal aantal hoofdcategorieen in en je hebt alvast het aantal queries dat op regel 200 tot 222 uitgevoerd wordt.

[ Voor 21% gewijzigd door Janoz op 22-08-2005 12:57 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
nergens voer ik joins
Verklaar regel 37 in je code a.u.b. Verder maak je ook nog gebruik van subqueries, kijk of dat noodzakelijk is. Het lijkt me verstandig als je gewoon op 0 begint en deze pagina met de hand, of je dat in dreamweaver of wat dan ook doet boeit me niet, op een degelijke manier in elkaar gaat zetten. Ik neem aan dat je met dreamweaver ook gewoon op code-niveau kunt werken. Doe dit, als dreamweaver er daarna niets meer van bakt dan is het jammer maar helaas. Dan functioneerd dreamweaver niet goed naar behoren en moet je op zoek naar een degelijke tool als je toch een IDE wilt hebben.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Dreamweaver en PHP kunnen prima samen werken. Die redenering snap ik dus totaal niet. Je kunt gewoon je html in dreamweaver maken en vervolgens in codeview je PHP invoegen.

Zorg wel dat je niet met PHP html genereert, maar dit buiten de PHP-tags houdt. Anders ziet Dreamweaver natuurlijk ook niet meer wat bij elkaar hoort..

Acties:
  • 0 Henk 'm!

Verwijderd

MrX's amazing tips:
1) Maak een configuratiefile config.php, waar per server alle serverafhankelijke settings in staan, en include deze in al je PHP files.

2) Maak deployment makkelijk: schrijf wat batch scripts om je PHP files via FTP over te zetten naar je webserver. Zo kan je ook eventuele configuratieproblemen oplossen (config.php file niet meekopieren)

3) Gebruik een visual tool / IDE voor web design

4) Gebruik een goed code editor (bijv. Notepad++) voor scriptification (toevoegen van code) aan de eerder ontworpen HTML

5) Gebruik alleen code generatie van een tool als je volledig begrijpt wat er geburt en grip hebt op dit proces.

6) Bouw per stuk functionaliteit een losse pagina. Include gezamelijke functionaliteit zoals menu's uit een aparte PHP file.

7) Lees de tips van Janoz aandachtig door om het aantal queries en daarmee de belasting op de database omlaag te krijgen

Succes :)

Acties:
  • 0 Henk 'm!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 20-09 20:01

jopiek

Tja... 'ns ff denken.

Topicstarter
iig tnx voor jullie commentaar, hij gaat idd naar hardware, (servers wel te verstaan), de cpu zit nu in de bios idle op 71 graden :S

ik zal als het systeem weer draait een en ander flink verbeteren, de eerste tests met jullie tips waren succesvol, toen ging de server uit...

Cogito Ergo Credo


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dit probleem heeft niets met hardware te maken, snap dat nou. Als er dus een hardwareprobleem is (en dat kan er best ook zijn), staat dat _totaal los_ van dit topic. :>

Het is jammer als je hardware momenteel niet stabiel draait, maar als je een beetje verder wil met dit topic, zal je het binnen dit topic niet meer over hardware moeten hebben.

{signature}


Acties:
  • 0 Henk 'm!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 20-09 20:01

jopiek

Tja... 'ns ff denken.

Topicstarter
Voutloos schreef op maandag 22 augustus 2005 @ 13:54:
Dit probleem heeft niets met hardware te maken, snap dat nou. Als er dus een hardwareprobleem is (en dat kan er best ook zijn), staat dat _totaal los_ van dit topic. :>

Het is jammer als je hardware momenteel niet stabiel draait, maar als je een beetje verder wil met dit topic, zal je het binnen dit topic niet meer over hardware moeten hebben.
Maar aangezien de server zichzelf nu uitzet zal ik niet anders kunnen dan wachten tot de server weer goed draait, en ik denk echt wel dat het ook aan de hardware ligt, de CPU is zwaar oververhit, en dat doet ie ook in de BIOS (> 82 graden!!!) dus, bedankt voor de tips en voor de rest zoek ik het qua php code zelf wel verder uit...

Cogito Ergo Credo

Pagina: 1