webForumDet fria alternativet

Manuellt funkar ok, cron blir fel

PHP

1 svar · 341 visningar · startad av orvar

Medlem sedan feb. 2001105 inlägg
Frågan#1

Hej,

Har ett problem där ett jobb för att få fram titel på en URL fungerar när jag kör det manuellt, medan när jag kör det som cronjob fungrar det inte.

Googlade fram en liten kodsnutt för att få fram titeln på en URL:

function getTitle($url) {
	$fh = fopen($url, "r");
	$str = fread($fh, 7500);
	fclose($fh);
	$str2 = strtolower($str);
	$start = strpos($str2, "<title>")+7;
	$len   = strpos($str2, "</title>") - $start;
	if ($start == 7)
		return $url;
	return substr($str, $start, $len);
}

Kör sedan nedan, där jag letar fram urls ur texter och printar ut url + titel:

$data = mysql_query('SELECT * FROM msgs ORDER BY id DESC LIMIT 100');
while ($rad = mysql_fetch_array($data)) {
	preg_match_all($pattern, $rad["text"], $a);
	$count = count($a[1]);
	for ($row = 0; $row < $count ; $row++) {
		echo 'URL:'.$a[1]["$row"].'<BR>';
		echo 'TITLE:'.getTitle($a[1]["$row"]).'<BR><BR>';
	}
}

Ovan kod har jag i sidan url.php. När jag anropar den manuellt via browsern skriver den ut url + titel precis som den skall. När jag kör den som cron skriver den dock ut url + url. Det verkar alltså som att getTitle alltid anser "$start == 7" vara true.

Har någon input på varför det blir så?

Medlem sedan aug. 20039 340 inlägg
#2

Titta på vad du sätter $start till och fundera... Vad kan få hel uttrycket att bli 7? Att strpos($str2, "<title>") evaluerar till 0, och det gör det när söksträngen inte finns i höstacken. Antingen läses en sträng och det inte finns några title-taggar i strängen, eller så blir något fel och du får en tom sträng i retur. PHP som fristående program kan nämligen köras med andra rättigheter jämfört med det som körs via webservern, beroende på hur servern är confad.
T ex kan allow_url_fopen vara satt till false i php-ini.

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)