Проблема в написании скрипта

RR
На сайте с 14.08.2007
Offline
12
1007

Простите заранее за кэпс в теме.. понимаю что нехорошо но горит протсо как надо сделать..

значит стоит задача.. нужно написать пхп скрипт. Есть соц сеть.. возьмем к примеру одноклассники ру те же.. нужно сделать скрипт чтобы выкачивала новые сообщения.. и постоянно обновляла.. собсно возникла проблема..

Получаем все страницы сообщений для заданного акка


while ($stop_sg!=1)
{
$buffer=connect($reg_domen,80,1,genmessage($reg_domen,3,"/dk?st.cmd=userMessageIncoming&st.page=".$page,0,$cookies));
$page+=1;
$bufferx.=$buffer;
if (strpos($buffer,$last_date)!=0) { $stop_sg=1;}
if (strpos($buffer,"<a href=\"/dk?st.cmd=userMessageIncoming&amp;st.page=$page")==0) $stop_sg=1;

}
echo $bufferx;

получаем до тех пор пока не будет найдено ссылки на следующую страницу либо на одной из станиц не будет обнаружено уже существующей в нашей базе даты. то есть эти сообщения мы уже скачивали.. пишу все в базу...

preg_match_all("/<tr><td><input value=(.*?)<\/tr>/is",$bufferx,$messages);

for ($i=0;$i<count($messages[1]);$i++) {

preg_match_all("/<\/td><td align=\"center\">(.*?)<\/td>/is",$messages[1][$i],$mestime);
$timemes=$mestime[1][1];
preg_match_all("/<div class=\"msg-area\">(.*?)<\/div>/is",$messages[1][$i],$mesbody);
$bodymes=$mesbody[1][0];
preg_match_all("/:(.*?)\"/is",$messages[1][$i],$mesid);
$idmes=$mesid[1][0];
$regex="/<a href=\"\/dk\?st.cmd=friendMain\&amp;st.friendId=".$mesid[1][0]."\&amp;tkn=(.*?)<\/a>/is";
preg_match_all($regex,$messages[1][$i],$mesname);
$namemes=substr($mesname[1][1],strpos($mesname[1][1],">")+1,strlen($mesname[1][1])-strpos($mesnamep[1][1],">"));

$search = array ("'<script[^>]*?>.*?</script>'si","'<[\/\!]*?[^<>]*?>'si","'([\r\n])[\s]+'","'&(quot|#34);'i","'&(amp|#38);'i","'&(lt|#60);'i","'&(gt|#62);'i","'&(nbsp|#160);'i","'&(iexcl|#161);'i","'&(cent|#162);'i","'&(pound|#163);'i","'&(copy|#169);'i","'&#(\d+);'e"); // интерпретировать как php-код
$replace = array ("","","\\1","\"","&","<",">"," ",chr(161),chr(162),chr(163),chr(169),"chr(\\1)");
$bodymes=preg_replace($search, $replace, $bodymes);



mysql_query("INSERT INTO teser (id, name, body, time)
VALUES ('$i','$namemes','$bodymes','$timemes');");

echo $i." -- ".$timemes." -- ".$last_date." -- ".$last_mes." -- ".$bodymes." -- ".$idmes." ".$namemes." ".$bodymes."<br /><br />";

}

окей.. записали.. все нормально.. запускаю второй раз скрипт... нам естессно написали новые сообщения..скрипт просканил страницу.. нашел.. что на этой странице(допустим 2ая) мы уже когда то были.. сохранили все страницы до второй включительно и остановились.. теперь снова попарсили все необхожимые данные.. кто писал и во сколько.. и нам надо сделать так чтобы в базу занеслись ровно те мессаги которые мы еще не записывали в базу.. (из базы нам известно последнее сообщение потому проблем не возникает) НО!!!! Записывается все в каком другом виде.. то есть там ведь сообщения идут от новых к старым.. и пишем соотвестственно так же.. и вторая итерация, то етсь второй запуск скрипта получает новые мессаги но неправильно не в том порядке из пишет.. пробовал менять порядок.. вообщем все равно неправильно.. что едлать помогите?!!!

Коля Дубр
На сайте с 02.03.2005
Offline
153
#1
red_rasca:
что едлать помогите?!!!

Хорошо хоть не елдать...

1. Объяснить нормально, в чем проблема. Нифига не понятно.

2. Если я правильно понимаю, ваш кусок кода вообще не должен работать на 2 и более проходах: вставляемое значение id берется из ключа массива, соотв. во 2й проход не будет уникальным. Если id у вас задан как primary key, должна появляться ошибка. Если нет - у вас будут записи с дублирующимися идентификаторами. Поставьте на поле id autoincrement и вообще уберите его из INSERT-запроса.

3. Капслок не прощают!

Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).
dmitcat
На сайте с 26.05.2005
Offline
123
#2

вместо куска

mysql_query("INSERT INTO teser (id, name, body, time)

VALUES ('$i','$namemes','$bodymes','$timemes');");

попробуйте так:

$r=mysql_query("SELECT count(id) FROM tester WHERE id='$i'");

if(!$r){die(mysql_error());}
$mas=mysql_fetch_array($r);
if(!$mas[0]){
mysql_query("INSERT INTO teser (id, name, body, time)
VALUES ('$i','$namemes','$bodymes','$timemes');");
}
Либо селяВи (http://www.puper.ru), либо селяВас (http://www.puper.ru)!!!
RR
На сайте с 14.08.2007
Offline
12
#3

то есть что делает этот код.. он получает какой то определенный(с тем же ай) объект базы.. и сравнивает.. типа того? но ведь у меня количество сообщений постоянно пополняется и ай не будет совпадать..

вот еще раз алгоритм работы

1. Получаем все сообщения на одноклассниках

а) получаем первую страницу. смотрим есть ли на ней ссылка на следующую и так далее до тех пор пока не дойдем до последней сттраницы

б) все загнали в переменную (буфферикс)

в) с помощью прег матча распарсили данный буфер на предмет сообщений(ВНИМАНИЕ! сообщения там идут от новых к старым, то есть сначала новые потом старые)

2. Обрабатываем сообщения

а) В цикле распарсим результат прег матча еще раз вытащим необходимые данные( то есть то что распарсили. каждую строчку найденную предыдущим прег матчем распарсим еще на другие) - получаем из каждого первого прегматча несколько вот таки переменных (ид. имя, сообщение, время). Теперь нам требуется записатьвсе это в базу..

И ТАК НАЧИНАЯ С ПЕРВОГО ДЕЙСТВИЯ ВСЕ БУДЕТ ПОВТОРЯТЬСЯ.. НО НЕМНОГО ИНАЧЕ

3. последнее сообщени и время его получения

4. Снова получаем все сообщения, то етсь получаем все траницы до тез пор пока не будет найдена последня дата, на этом скачивание страниц останавливаем.

5. так же парсим.. пишем в базу

6. в базе все пишется в каком то неправильном виде

Вот я просматриваю базу в пхпмайдадмин, может ыбть я что то непонимаю? то что вверху это начало таблицы так? и пишется по сути сверху вниз.. так вот первый раз когда мы получаем просто все сообщения пишутся они ПЕРВЫМ - новое.. , последним - старое..

После того как мы хотим получить новые сообщения пишется вообщемлабуда.. они встают в начало таблицы.. и в другом порядке.. от старого к новому.. вот вроде все..

что касается предыдущего кода..мы ведь получаем строчку где ид=ау.. на самом деле там должен быть ид одноклассников(акка однокашек).. так что это не варинат.. и все время ау начинается с 0 и так каждый раз.. помогите плз.. очень надо

RR
На сайте с 14.08.2007
Offline
12
#4

up up up up up помогите

crosone
На сайте с 28.03.2008
Offline
73
#5

наверно правильнее будет проверку далать не по ID а по дате отправленного сообщения, все равно ты скачиваешь все сообщения каждый раз...

если этот результат не устраивает, то перед проверкой лучше массив развернуть и делать проверку от старых к новым.

array_reverse();

следовательно новые письма будут иметь уникальный ID

٩(๏̯͡๏)۶
RR
На сайте с 14.08.2007
Offline
12
#6

спасибо помогло)) огромное спасибо чел)

red_rasca добавил 27.11.2008 в 01:12

блин.. люди тот вопрос более или менее решил..

вот теперь проблемка с мускулом

вот пишу вот такие данные

в цикле

311613384 Гаяне Самвелян mi znakomi? 20.11.2008 03:42

34980468738 ____Marusya ____ всё ок! 20.11.2008 09:12

358233790 Руслана Сухинина привет, хорошо, а у тебя? :-) 20.11.2008 11:10

49064862464 Мария /Голодковская/ что то ты ко мне очень часто заходила.. 20.11.2008 11:28

154832423811 Олег Луканов вроде нормально. Мы знакомы? 20.11.2008 11:29

33625751186 OXANA .. .. .. Привет.хорошо 20.11.2008 11:33

79886686 Петр Алексеев вот с югов прилетел) 20.11.2008 11:34

80397888572 Александра Кожуханцева привет,хорошо,а у тебя 20.11.2008 11:34

697599760 Екатерина Шибуняева привет. все хорошо. как у тебя? 20.11.2008 11:47

160290391933 Анастасия (Асти) фон Блонд привет, все хорошо :-) а мы знакомы7 20.11.2008 12:29

379484410 Valeri Lafi Супер) 20.11.2008 12:54

30361704169 Влад Валов Да нормуль! (fr) 20.11.2008 13:17

250071968 Ирина Сегеда Привет ) а мы знакомы? 20.11.2008 14:57

146968544425 Лидия Ж. Version 2.0 супер ) 20.11.2008 16:16

153616355551 Эльвира Насибулина отлично 20.11.2008 18:46

130765378978 Елена Анопко привет неплохо ,у тебя как? 20.11.2008 23:16

163728998904 Алексей Блохин Привет! Отлично!!! А у тебя?! 21.11.2008 00:55

13373362495 Сергей Реутов привет ) болею ((( 21.11.2008 20:39

189781406326 MURAD KOCHARLI privet (F) 23.11.2008 00:46

240310871801 teymur tagizade ZRYA TAKUYU FOTKU POSTAVVILA) 23.11.2008 02:07

пишутся данные в разброс в другом абсолютно левом порядке... объясните в чем может быть дело? может быть просто один хапрос выполняется раньше другого и поэтому они записываются в другом порядке? как тогшда сделать так чтобы все работало правильно?

а записывается вот в таком виде..

153616355551 &#208;&#208;»&#209;&#338;&#208;&#178;&#208;&#184;&#209;?&#208;° &#208;&#157;&#208;°&#209;&#129;&#208;&#184;&#208;±&#209;&#402;&#208;»&#208;&#184;&#208;&#189;&#208;° &#208;&#190;&#209;‚&#208;»&#208;&#184;&#209;‡&#208;&#189;&#208;&#190; 20.11.2008 18:46

130765378978 &#208;•&#208;»&#208;µ&#208;&#189;&#208;° &#208;&#144;&#208;&#189;&#208;&#190;&#208;&#191;&#208;&#186;&#208;&#190; &#208;&#191;&#209;?&#208;&#184;&#208;&#178;&#208;µ&#209;‚ &#208;&#189;&#208;µ&#208;&#191;&#208;»&#208;&#190;&#209;…&#208;&#190; ,&#209;&#402; &#209;‚&#208;µ&#208;±&#209;&#143; &#208;&#186;&#208;°&#208;&#186;? 20.11.2008 23:16

146968544425 &#208;›&#208;&#184;&#208;&#180;&#208;&#184;&#209;&#143; &#208;–. Version 2.0 &#209;&#129;&#209;&#402;&#208;&#191;&#208;µ&#209;? ) 20.11.2008 16:16

30361704169 &#208;’&#208;»&#208;°&#208;&#180; &#208;’&#208;°&#208;»&#208;&#190;&#208;&#178; &#208;”&#208;° &#208;&#189;&#208;&#190;&#209;?&#208;&#188;&#209;&#402;&#208;»&#209;&#338;! (fr) 20.11.2008 13:17

250071968 &#208;&#732;&#209;?&#208;&#184;&#208;&#189;&#208;° &#208;&#161;&#208;µ&#208;&#179;&#208;µ&#208;&#180;&#208;° &#208;&#376;&#209;?&#208;&#184;&#208;&#178;&#208;µ&#209;‚ ) &#208;° &#208;&#188;&#209;‹ &#208;·&#208;&#189;&#208;°&#208;&#186;&#208;&#190;&#208;&#188;&#209;‹? 20.11.2008 14:57

379484410 Valeri Lafi &#208;&#161;&#209;&#402;&#208;&#191;&#208;µ&#209;?) 20.11.2008 12:54

160290391933 &#208;&#144;&#208;&#189;&#208;°&#209;&#129;&#209;‚&#208;°&#209;&#129;&#208;&#184;&#209;&#143; (&#208;&#144;&#209;&#129;&#209;‚&#208;&#184;) &#209;„&#208;&#190;&#208;&#189; &#208;‘&#208;»&#208;&#190;&#208;&#189;&#208;&#180; &#208;&#191;&#209;?&#208;&#184;&#208;&#178;&#208;µ&#209;‚, &#208;&#178;&#209;&#129;&#208;µ &#209;…&#208;&#190;&#209;?&#208;&#190;&#209;&#710;&#208;&#190; :-) &#208;° &#208;&#188;&#209;‹ &#208;·&#208;&#189;... 20.11.2008 12:29

697599760 &#208;•&#208;&#186;&#208;°&#209;‚&#208;µ&#209;?&#208;&#184;&#208;&#189;&#208;° &#208;&#168;&#208;&#184;&#208;±&#209;&#402;&#208;&#189;&#209;&#143;&#208;µ&#208;&#178;&#208;° &#208;&#191;&#209;?&#208;&#184;&#208;&#178;&#208;µ&#209;‚. &#208;&#178;&#209;&#129;&#208;µ &#209;…&#208;&#190;&#209;?&#208;&#190;&#209;&#710;&#208;&#190;. &#208;&#186;&#208;°&#208;&#186; &#209;&#402; &#209;‚&#208;µ&#208;... 20.11.2008 11:47

80397888572 &#208;&#144;&#208;»&#208;µ&#208;&#186;&#209;&#129;&#208;°&#208;&#189;&#208;&#180;&#209;?&#208;° &#208;&#353;&#208;&#190;&#208;¶&#209;&#402;&#209;…&#208;°&#208;&#189;&#209;†&#208;µ&#208;&#178;&#208;° &#208;&#191;&#209;?&#208;&#184;&#208;&#178;&#208;µ&#209;‚,&#209;…&#208;&#190;&#209;?&#208;&#190;&#209;&#710;&#208;&#190;,&#208;° &#209;&#402; &#209;‚&#208;µ&#208;±&#209;&#143; 20.11.2008 11:34

79886686 &#208;&#376;&#208;µ&#209;‚&#209;? &#208;&#144;&#208;»&#208;µ&#208;&#186;&#209;&#129;&#208;µ&#208;µ&#208;&#178; &#208;&#178;&#208;&#190;&#209;‚ &#209;&#129; &#209;&#381;&#208;&#179;&#208;&#190;&#208;&#178; &#208;&#191;&#209;?&#208;&#184;&#208;»&#208;µ&#209;‚&#208;µ&#208;») 20.11.2008 11:34

33625751186 OXANA .. .. .. &#208;&#376;&#209;?&#208;&#184;&#208;&#178;&#208;µ&#209;‚.&#209;…&#208;&#190;&#209;?&#208;&#190;&#209;&#710;&#208;&#190; 20.11.2008 11:33

154832423811 &#208;&#382;&#208;»&#208;µ&#208;&#179; &#208;›&#209;&#402;&#208;&#186;&#208;°&#208;&#189;&#208;&#190;&#208;&#178; &#208;&#178;&#209;?&#208;&#190;&#208;&#180;&#208;µ &#208;&#189;&#208;&#190;&#209;?&#208;&#188;&#208;°&#208;»&#209;&#338;&#208;&#189;&#208;&#190;. &#208;&#339;&#209;‹ &#208;·&#208;&#189;&#208;°&#208;&#186;&#208;&#190;&#208;&#188;&#209;‹... 20.11.2008 11:29

49064862464 &#208;&#339;&#208;°&#209;?&#208;&#184;&#209;&#143; /&#208;“&#208;&#190;&#208;»&#208;&#190;&#208;&#180;&#208;&#186;&#208;&#190;&#208;&#178;&#209;&#129;&#208;&#186;&#208;°&#209;&#143;/ &#209;‡&#209;‚&#208;&#190; &#209;‚&#208;&#190; &#209;‚&#209;‹ &#208;&#186;&#208;&#190; &#208;&#188;&#208;&#189;&#208;µ &#208;&#190;&#209;‡&#208;µ&#208;&#189;&#209;&#338; &#209;‡&#208;°&#209;&#129;&#209;‚&#208;&#190;... 20.11.2008 11:28

id name body time

34980468738 ____Marusya ____ &#208;&#178;&#209;&#129;&#209;‘ &#208;&#190;&#208;&#186;! 20.11.2008 09:12

358233790 &#208; &#209;&#402;&#209;&#129;&#208;»&#208;°&#208;&#189;&#208;° &#208;&#161;&#209;&#402;&#209;…&#208;&#184;&#208;&#189;&#208;&#184;&#208;&#189;&#208;° &#208;&#191;&#209;?&#208;&#184;&#208;&#178;&#208;µ&#209;‚, &#209;…&#208;&#190;&#209;?&#208;&#190;&#209;&#710;&#208;&#190;, &#208;° &#209;&#402; &#209;‚&#208;µ&#208;±&#209;&#143;? :-) 20.11.2008 11:10

311613384 &#208;“&#208;°&#209;&#143;&#208;&#189;&#208;µ &#208;&#161;&#208;°&#208;&#188;&#208;&#178;&#208;µ&#208;»&#209;&#143;&#208;&#189; mi znakomi? 20.11.2008 03:42

13373362495 &#208;&#161;&#208;µ&#209;?&#208;&#179;&#208;µ&#208;&#185; &#208; &#208;µ&#209;&#402;&#209;‚&#208;&#190;&#208;&#178; &#208;&#191;&#209;?&#208;&#184;&#208;&#178;&#208;µ&#209;‚ )\r&#208;±&#208;&#190;&#208;»&#208;µ&#209;&#381; ((( 21.11.2008 20:39

189781406326 MURAD KOCHARLI privet (F) 23.11.2008 00:46

240310871801 teymur tagizade ZRYA TAKUYU FOTKU POSTAVVILA) 23.11.2008 02:07

Не обращайте внимание на кодировку все правильно.. просто в утф8.. а вот по времени можно видеть что записаны данные неверно

RR
На сайте с 14.08.2007
Offline
12
#7

ап ап ап ап ап ап ап ап ап помогите последний пост

RR
На сайте с 14.08.2007
Offline
12
#8

ап ап ап ап ап ап ап ап ап ап ап ап ап ап

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий