Возникла проблема с php-скриптом для получения заголовка URL. Он работает, когда я запускаю его вручную, но не когда я запускаю его через cron.
Погуглил, чтобы получить небольшой скрипт для получения заголовка 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);
}
Затем я запускаю нижеследующее, где я ищу URL-адреса в текстах и печатаю URL-адрес с заголовком:
$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>';
}
}
Приведенный выше код находится в url.php. Когда я запускаю его вручную через браузер, он работает нормально и печатает URL с правильным названием. Однако, когда я запускаюсь как запланированное задание cron (раз в минуту), оно записывает url и url, то есть кажется, что getTitle всегда интерпретирует «$ start == 7» как истинное.
Может ли это быть связано со временем? Fopen и fread занимают много времени? Если так, как я могу это исправить.
Я видел типичную проблему cron - env. переменные, но я не понимаю, как это может повлиять на это?
Любая помощь или идеи приветствуются!