Fájlok méretének összehasonlítása
Csináltam egy cron scriptet, ami 30 percenként lefut. A feladata 2 fájl méretének az összehasonlítása. Nem értem pontosan miért, de eszi a memóriát rendesen. Olyan mintha nem szabadítaná fel mikor lezárom curl_close($ch);-el.
Hol lehet a scriptben a hiba? Vagy milyen módszerrel kellene ezt megcsinálni?
Codeigniter-t használok és MYSQL-t.Ezt a hibaüzenet kapom:
lfd on ###: Excessive resource usage: user (718971 (Parent PID:718953))
Time: Wed Feb 26 01:30:03 2014 +0100
Account: user
Resource: Virtual Memory Size
Exceeded: 227 > 150 (MB)
Executable: /usr/selector/php-cli
Command Line: /usr/local/bin/php -f /home/user/public_html/index.php update size_check
PID: 718971 (Parent PID:718953)
Killed: Yes
Amit még próbáltam és szintén ilyen hibaüzenetet produkált.helyett
■ Hol lehet a scriptben a hiba? Vagy milyen módszerrel kellene ezt megcsinálni?
Codeigniter-t használok és MYSQL-t.
private function get_file_size($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
$data = curl_exec($ch);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
return $size;
}
public function size_check()
{
if(!$this->input->is_cli_request()) return;
$this->load->model('world_model');
$this->load->model('confederacy_model');
$this->load->model('attack_model');
$url = $this->world_model->get_worlds(array(
'key' => 'world_id',
'value' => 'world_url'));
$world = $this->confederacy_model->get_confederacies(array(
'key' => 'confederacy_id',
'value' => 'confederacy_world_id'));
$attacks = $this->attack_model->admin_get_attacks(array(
'attack_hero' => 0,
'attack_time_min' => now(),
'key' => 'attack_id'));
foreach($attacks as $attack_id => $attack)
{
$url_ = $url[$world[$attack->attack_confederacy_id]];
$img_old = $this->get_file_size(base_url().'attack_heros/hero_'.$attack_id.'.jpg');
$img_new = $this->get_file_size('http://'.$url_.'/hero_body.php?uid='.$attack->attack_from_uid.'&'.now());
if( $img_old != $img_new )
{
$this->attack_model->update_attack(array(
'attack_id' => $attack_id,
'attack_confederacy_id' => $attack->attack_confederacy_id,
'attack_hero' => 1));
}
}
}
lfd on ###: Excessive resource usage: user (718971 (Parent PID:718953))
Time: Wed Feb 26 01:30:03 2014 +0100
Account: user
Resource: Virtual Memory Size
Exceeded: 227 > 150 (MB)
Executable: /usr/selector/php-cli
Command Line: /usr/local/bin/php -f /home/user/public_html/index.php update size_check
PID: 718971 (Parent PID:718953)
Killed: Yes
Amit még próbáltam és szintén ilyen hibaüzenetet produkált.
$img_old = $this->get_file_size(base_url().'attack_heros/hero_'.$attack_id.'.jpg');
$img_old = strlen(file_get_contents(base_url().'attack_heros/hero_'.$attack->attack_id.'.jpg'));
Letöltés nélkül nem lehet
content-length gondolom megadja
szerk.
get_headers - ez a függvény lesz a jó gondolom.
A fenti megoldás miért nem jó? Miért nem szabadít fel?
A memory_get_usage() függvénnyel vizsgálva, nem is látható ez a memóriahasználat. Mivel kellene vizsgálnom?
memory_get_peak_usage()
Köszönöm az ötlet
1457 db ellenőrzés lefutva
Futási idő: 219 mp
Kezdeti memória használat: 2.69 MB
Maximum memória használat: 9.36 MB
A fájlok mérete amúgy kicsi. 24,0 KB (24 576 bájt) az összes kb.
Mi lenne, ha globálisan egy
Nem tudom pontosan hogy
Az eredmény:
709 db ellenőrzés lefutva
Futási idő: 68 mp
Kezdeti memória használat: 2.69 MB
Maximum memória használat: 5.62 MB
Amúgy a hiba előtti futásnál ez volt a futás eredménye:
213 db ellenőrzés lefutva
Futási idő: 30 mp
Kezdeti memória használat: 2.54 MB
Maximum memória használat: 3.81 MB
Amikor hiba volt persze nem futott le rendesen, de utána
192 db ellenőrzés lefutva
Futási idő: 18 mp
Kezdeti memória használat: 2.54 MB
Maximum memória használat: 3.63 MB
Nem is értem miért kaptam a hibát. Csak arra tudok gondolni, hogy azt, nem ez a rész okozta hanem más, csak éppen ez futott túl, ezért ezt lőtte le. Ez lehetséges?
Nekem is az volt az első
HEAD kérés
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4
szerk:
illetve így is lehet: