Zadejte hledaný výraz...

Velké množství procesů kvůli jednomu řádku skriptu?

unlucky
verified
rating uzivatele
(16 hodnocení)
1. 7. 2013 22:16:13
Nikdy se nic podobného nestalo. Až dneska. Je to kus kódu z ranky.cz Ostatní weby na stejném hostingu jsou v pořádku.
$footer .= ranky_ads(' | %1$s');
function ranky_ads($t,$s='http://ads.ranky.cz/slot/xxx/export/utf.csv',$l='xxx.dat'){
if(!is_file($l)||(filemtime($l)<(time()-40400))||isset($_GET) || filesize($l)<8){
$userAgent = $_SERVER;
$timeout = 30;
$curlObject = curl_init();
curl_setopt($curlObject,CURLOPT_URL,$s);
curl_setopt($curlObject,CURLOPT_HEADER,false);
curl_setopt($curlObject, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($curlObject,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curlObject, CURLOPT_USERAGENT, $userAgent);
$data = curl_exec($curlObject);
curl_close($curlObject);
$myFile = $l;
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $data;
fwrite($fh, $stringData);
fclose($fh);
}
if(filesize($l)<8) return null;$h=fopen($l,'r');
$a=fread($h,filesize($l));
preg_match_all('~(+);(+);(http://+)~',$a,$m,PREG_SET_ORDER);
$r='';
foreach($m as $v){
$r.=sprintf($t,$v,$v,$v);
}
return $r;
}
Objevují se mi maximum počet procesů - vyskakují mi pak všude interní errory. V čem může tak být problem? Funkci mám i jinde a nic se neděje. když funkci nezavolám, vše jede normálně.
Edit: Nyní, když tento kód škrtnu, tak se sníží počet procesů o 50%. Skript přitom nepoužívá databázi, jenom javascript a smarty. Žádné loopy v php kódu
1. 7. 2013 22:16:13
https://webtrh.cz/diskuse/velke-mnozstvi-procesu-kvuli-jednomu-radku-skriptu#reply918347
trosa
verified
rating uzivatele
(4 hodnocení)
2. 7. 2013 09:41:25
obecne muze byt problem v tom, ze ten web kterej pres CURL oteviras muze zdrzovat a proto pochopitelne i tvuj skript pobezi dlouho a tim padem se t pomnozi procesy. Pokud toto nemas v CRONu, ale nekde v beznem kodu, tak si predstav, ze prijde na tvuj web rekneme 100 lidi a nastane cas aktualizace, ale:
1) prijde clovek na tvuj web a skript zjisti ze je potreba aktualizace
2) nacteni URL trva, takze se skript rekneme na par vterin zastavi nez ziska data
3) kazdy novy pozadavek zjistiti opet ze je cas aktualizace a opakuje se bod 1) pro kazdeho nove prichoziho
4) nacteni URL z bodu 2 se po X vterinach povede a ulozi se do souboru. tento krok se opakuje rekneme klidne 100x, pokud ti behem bodu 2 prislo na web 100 lidi. mas tedy soubor ve velmi kratickem okamziku 100x po sobe aktualizovany
takze celkove navrh systemu je chybne. Presun tento kod co CRONu a poustej ho rekneme 1x za 10minut nebo dany pozadovany interval a na webovym skriptu nech, at jen cte data z lokalno souboru ktery ti tento CRON aktualizuje
2. 7. 2013 09:41:25
https://webtrh.cz/diskuse/velke-mnozstvi-procesu-kvuli-jednomu-radku-skriptu#reply918346
Pro odpověď se přihlašte.
Přihlásit