No wlasnie problem w tym, ze ja nie wyswietlam tych danych. Zapytanie do bazy danych ma na celu tylko pobranie wartosci czasu odpowiedzi do zliczania sredniej. Poza tym, zazwyczaj jesli obciazam zbytnio serwer, skrypt wykonuje sie do momentu przeciazenia i staje, albo wyrzuca blad np. o zbyt duzej ilosci zaalokowanej pamieci. A tutaj skrypt nawet nie probuje sie wykonac, bo zamiast wyswietlic ta strone otwiera mi okienko zapisywania pliku. Jakies inne pomysly? Oto skrypt:
<div class="header">
<?php echo $this->mod->translate('Response time comparison',$this->ln);?></div>
<br />
<form action="http://
<?php echo $_SERVER['SERVER_NAME'];?>/index.php/index/index/
<?php echo $this->ln;?>/comparison" method="POST">
<table border="0">
<tr><th></th><th>
<?php echo $this->mod->translate('Year',$this->ln);?></th><th>
<?php echo $this->mod->translate('Month',$this->ln);?></th><th>
<?php echo $this->mod->translate('Day',$this->ln);?></th><th></th><th>
<?php echo $this->mod->translate('Year',$this->ln);?></th><th>
<?php echo $this->mod->translate('Month',$this->ln);?></th><th>
<?php echo $this->mod->translate('Day',$this->ln);?></th><th></th></tr>
<tr><th>
<?php echo $this->mod->translate('From:',$this->ln);?></th><td><select name="yearF">
<?php for($i=2008;$i<=(date('Y')+0
);$i++) echo '<option>'.$i;?></select></td><td><select name="monthF">
<?php for($i=1;$i<=12;$i++) echo '<option>'.$i;?></select></td><td><select name="dayF">
<?php for($i=1;$i<=31;$i++) echo '<option>'.$i;?></select></td><th>
<?php echo $this->mod->translate('To:',$this->ln);?></th><td><select name="yearT">
<?php for($i=2008;$i<=(date('Y')+0
);$i++) echo '<option>'.$i;?></select></td><td><select name="monthT">
<?php for($i=1;$i<=12;$i++) echo '<option>'.$i;?></select></td><td><select name="dayT">
<?php for($i=1;$i<=31;$i++) echo '<option>'.$i;?></select></td><td><input type="submit" value="OK"></input></td></tr>
</table>
</form>
<?php
$startDate=date('Y-m-d').' 00:00:00'; $endDate=date('Y-m-d').' 23:59:59'; $startDate=$_POST['yearF'].'-'.$_POST['monthF'].'-'.$_POST['dayF'].' 00:00:00';
$endDate=$_POST['yearT'].'-'.$_POST['monthT'].'-'.$_POST['dayT'].' 23:59:59';
}?>
<b>
<?php echo $this->mod->translate('Since',$this->ln).': '.$startDate.' '.$this->mod->translate('To:',$this->ln).' '.$endDate;?></b>
<table width="100%" border="0">
<?php $query=$this->db->query('select * from sites');
foreach($query->result() as $site){
echo '<tr><th style="text-align:right">'.$site->address.' </th><td>'; $rsp=0;
$count=0;
$query2=$this->db->query('select * from pages where `site`='.$site->id_site);
foreach($query2->result() as $page){
$query3=$this->db->query('select * from logs where `page`='.$page->id_page.' and `date`>="'.$startDate.'" and `date`<="'.$endDate.'"');
foreach($query3->result() as $log){
$rsp+=$log->response;
$count+=1;
}
}
if($count==0
) echo $this->mod->translate('No logs available',$this->ln); else{
$avgRsp=(int)($rsp/$count);
if($avgRsp>=0){
echo '<div style="background:#5353a8; width:'.($avgRsp*4).'px">'; }else{
echo '<div style="background:#ff0000">'.$this->mod->translate('No response',$this->ln); }
}
}?>
</table>
Ten skrypt to plik comparison.php wlasnie (URL ma taka postac, poniewaz uzywam CodeIgnitera), wiec teoretycznie po kliknieciu OK powinna wyswietlic sie ta sama strona z nowymi danymi. I tak sie dzieje, jesli wybiore odpowiednio maly zakres czasu lub uzyje domyslnego. Zrozumialbym przeciazenie serwera, ale czy moze objawiac sie to w taki sposob, ze po kliknieciu linka (w innym miejscu aplikacji mam ten sam problem z linkiem zamiast przycisku wiec to zadna roznica) zamiast otworzyc strony czy wyswietlic bledu, otwiera sie okienko zapisywania pliku? (juz kompletnie inna sprawa jest fakt, ze plik, ktory rzekomo "chcialbym" zapisac ma nazwe odpowiadajaca ostatniemu czlonowi URL skryptu action formularza a po zapisaniu jest kompletnie pusty i bez rozszerzenia)