<?php
set_time_limit('0');
$open = ftp_connect("host", 21, 0);
ftp_set_option ($open, FTP_TIMEOUT_SEC, 0);
if (!ftp_login($open, "login", "password")) exit("Не могу соединиться");
$folder = 'quotes';
$dir = ftp_mkdir($open, $folder);
for ($i = 1; $i <= 406632; $i++)
{
$b = file_get_contents('http://bash.org.ru/quote/'.$i);
if (preg_match('|<div>(.*?)</div>|is', $b, $quote))
{
$fp1 = fopen ('q'.$i.'.html' , "w+" );
$remote_file = $dir.'/q'.$i.'.html';
fputs ( $fp1 , " <p>$quote[1]</p>" );
ftp_fput ($open, $remote_file, $fp1, FTP_BINARY);
fclose($fp1);
}
}
ftp_close($open);
mail("mail@mail.ru", "Парсинг башорга", "Парсинг башорга завершен!");
?>
Cron'ом пользоваться чуть-чуть умею, а конкретно запустил скрипт вечного онлайна вконтакте, который прекрасно работает. Вот команда запуска cron
/usr/bin/lynx -source http://site.ru/bashf.php , точно также запускал онлайнер вконтакте.
Где я допустил ошибки?
Надеюсь на помощь на форуме, где меня еще ни разу не послали даже с глупыми вопросами)
Спустя 2 дня, 2 часа, 2 минуты, 9 секунд (13.05.2010 - 14:37) j1gs4w88 написал(а):
Предыдущий код без крона не запускался, там была масса ошибок с моей стороны. Новый код запускается без крона, НО... Создает файлы на локалхосте, к фтп подключается, там создает нужную папку, а в нее сохраняет пустые файлы. В чем может быть проблема?
<?php
set_time_limit('0');
$open = ftp_connect("host", 21, 864000);
ftp_set_option ($open, FTP_TIMEOUT_SEC, 864000);
ftp_login($open, "login", "password");
$folder = 'quotes';
if (ftp_mkdir($open, $folder))
{
echo "Папка $folder успешно создана\n";
}
else
{
echo "Не возможно создать папку $folder\n";
}
for ($i = 1; $i <= 406632; $i++)
{
$b = file_get_contents('http://bash.org.ru/quote/'.$i);
if (preg_match('|<div>(.*?)</div>|is', $b, $quote))
{
$fp1 = fopen ('q'.$i.'.html' , "w+" );
$remote_file = $folder.'/q'.$i.'.html';
fputs ( $fp1 , " <p>$quote[1]</p>" );
ftp_fput ($open, $remote_file, $fp1, FTP_BINARY);
fclose($fp1);
}
}
ftp_close($open);
mail("mail@mail.ru", "Парсинг башорга", "Парсинг башорга завершен!");
?>
Спустя 4 минуты, 1 секунда (13.05.2010 - 14:41) jetistyum написал(а):
дебажь.. посмотри что возвращается в file_get_contents ... если приходит, то на каком этапе теряется..
Спустя 3 минуты, 43 секунды (13.05.2010 - 14:45) j1gs4w88 написал(а):
В file_get_contents приходит то, что нужно ибо на локалхосте создаются нужные файлы и они заполнены нужным контентом, а вот на фтп создаются пустые файлы.
Спустя 3 минуты, 16 секунд (13.05.2010 - 14:48) Kuzya написал(а):
Эм..а RSS не проще использовать?
Подгрузил через SimpleXML и работай. Так у тебя всегда будет везде гарантированно правильный контент.
Касательно FTP можно попробовать сохранять сначала file_put_contents`ом информацию в файл, потом создавать указатель через fopen, но с ключём r, и уже ничего не делая с указателем передавать его в ftp_puts

Касательно FTP можно попробовать сохранять сначала file_put_contents`ом информацию в файл, потом создавать указатель через fopen, но с ключём r, и уже ничего не делая с указателем передавать его в ftp_puts
Спустя 1 минута, 38 секунд (13.05.2010 - 14:50) j1gs4w88 написал(а):
Я на php прогаю не долго и не понимаю о чем идет речь))) Как именно RSS использовать?
Спустя 51 секунда (13.05.2010 - 14:51) jetistyum написал(а):
попробуй создать удаленно на FTP просто тестовый файл с контентом. запусти скрипт через браузер включи отображение всех ошибок... сам подумай..
Спустя 2 минуты, 49 секунд (13.05.2010 - 14:54) jetistyum написал(а):
RSS тут может и правильнее, но через него не высосешь старые записи это раз и если не работает скрипт парсинга, то нужно чинить скрипит парсинга, а забивать и делать другое - не по программерски как-то

Спустя 19 секунд (13.05.2010 - 14:54) Kuzya написал(а):
Только подредактировал своё сообщение, как уже тут написали целых 2. Прочитай его ещё раз, я там на счёт FTP добавил.
Про RSS в википедии прочитай. Грубо говоря в RSS содержимое сайта выводится в виде XML-файла, который можно легко обработать с помощью библиотеки SimpleXML
Да, если речь идёт о старых записях то тут ничего не поделать.
Про RSS в википедии прочитай. Грубо говоря в RSS содержимое сайта выводится в виде XML-файла, который можно легко обработать с помощью библиотеки SimpleXML
Да, если речь идёт о старых записях то тут ничего не поделать.
Спустя 1 день, 8 часов, 29 минут, 13 секунд (14.05.2010 - 23:23) j1gs4w88 написал(а):
Цитата (Kuzya @ 13.05.2010 - 11:48) |
Касательно FTP можно попробовать сохранять сначала file_put_contents`ом информацию в файл, потом создавать указатель через fopen, но с ключём r, и уже ничего не делая с указателем передавать его в ftp_puts |
<?phpВерно ли я понял ваши рекомендации?
set_time_limit('0');
$open = ftp_connect("host ", 21, 864000);
ftp_set_option ($open, FTP_TIMEOUT_SEC, 864000);
ftp_login($open, "login", "pw");
$folder = 'quotes';
if (ftp_mkdir($open, $folder))
{
echo "Папка $folder успешно создана\n";
}
else
{
echo "Не возможно создать папку $folder\n";
}
for ($i = 1; $i <= 406632; $i++)
{
$b = file_get_contents('http://bash.org.ru/quote/'.$i);
if (preg_match('|<div>(.*?)</div>|is', $b, $quote))
{
$c = '<p>'.$quote[1].'</p>';
$b = file_put_contents('q'.$i.'.html', $c);
$fp = fopen ('q'.$i.'.html' , "r" );
$remote_file = $folder.'/q'.$i.'.html';
ftp_put ($open, $remote_file, $fp, FTP_BINARY);
}
}
ftp_close($open);
mail("mail@mail.ru", "Парсинг башорга", "Парсинг башорга завершен! ");
?>
Как вообще реализовать парсер сходу на фтп, чтобы на локалхосте файлы не создавались? Парсер планирую запустить с крона, если быть точным, то кучу таких парсеров разных сайтов)))
Спустя 13 часов, 52 минуты, 47 секунд (15.05.2010 - 13:16) j1gs4w88 написал(а):
<?phpВот такой код отлично работает с локалхоста и заливает как нужно на фтп, но..... С крона он не работает((( А еще не работает unlink.
set_time_limit('0');
$open = ftp_connect("host", 21, 864000);
ftp_set_option ($open, FTP_TIMEOUT_SEC, 864000);
ftp_login($open, "login", "password");
$folder = 'quotes';
if (ftp_mkdir($open, $folder))
{
echo "Папка $folder успешно создана\n";
}
else
{
echo "Не возможно создать папку $folder\n";
}
for ($i = 1; $i <= 406632; $i++)
{
$b = file_get_contents('http://bash.org.ru/quote/'.$i);
if (preg_match('|<div>(.*?)</div>|is', $b, $quote))
{
$c = '<p>'.$quote[1].'</p>';
$f = '/q'.$i.'.html';
file_put_contents($f, $c);
$remote_file ='/'. $folder.'/q'.$i.'.html';
$fp = fopen ('/q'.$i.'.html' , "r+" );
ftp_fput ($open, $remote_file, $fp, FTP_BINARY);
unlink($f);
}
}
ftp_close($open);
mail("mail@mail.ru", "Парсинг башорга", "Парсинг башорга завершен!");
?>
Спустя 2 дня, 17 часов, 36 минут, 13 секунд (18.05.2010 - 06:52) Kuzya написал(а):
С крона он не работает
Это как? Может просто команда в кроне не так прописана? Ошибки какие-нибудь вылазеют?
А еще не работает unlink.
Опять же, ошибки какие? Кажется мне что проблема из-за слэша в начале имени файла. Зачем он там?
Спустя 2 часа, 8 минут, 9 секунд (18.05.2010 - 09:00) j1gs4w88 написал(а):
На одном форуме мне посоветовали поставить абсолютные пути к файлам. В данный момент скрипт выглядит вот так:
<?phpCron запускается командой /usr/local/bin/php /home/nick/data/bashf.php
set_time_limit('0');
$open = ftp_connect("host", 21, 864000);
ftp_set_option ($open, FTP_TIMEOUT_SEC, 864000);
ftp_login($open, "login", "pw");
$folder = 'quotes';
if (ftp_mkdir($open, $folder))
{
echo "Папка $folder успешно создана\n";
}
else
{
echo "Не возможно создать папку $folder\n";
}
for ($i = 1; $i <= 406632; $i++)
{
$b = file_get_contents('http://bash.org.ru/quote/'.$i);
if (preg_match('|<div>(.*?)</div>|is', $b, $quote))
{
$c = '<p>'.$quote[1].'</p>';
$f = '/home/nick/data/q'.$i.'.html';
file_put_contents($f, $c);
$remote_file = '/'.$folder.'/q'.$i.'.html';
$fp = fopen ('/home/nick/data/q'.$i.'.html' , "r+" );
ftp_fput ($open, $remote_file, $fp, FTP_BINARY);
unlink($f);
}
}
ftp_close($open);
mail("mail@mail.ru", "Парсинг башорга", "Парсинг башорга завершен!");
?>
Спустя 1 час, 52 минуты, 10 секунд (18.05.2010 - 10:52) Kuzya написал(а):
Без лога ошибок трудно сказать где что и почему не работает. Включи error_log в php.ini, пусть ошибки пишуться в отдельный файл. После очередного cron`ового запуска сможешь почитать что случилось. Ну и сюда сообщить заодно 
P.S. Про слэш я имел в виду вот что из прошлого сообщения:
В последнем сообщении увидел что всё с путями нормально

P.S. Про слэш я имел в виду вот что из прошлого сообщения:
$f = '/q'.$i.'.html';
file_put_contents($f, $c);
В последнем сообщении увидел что всё с путями нормально