Вобщем, решил написать демона для поиска в DC++ (см http://swnet.spb.ru/...showtopic=11137 )
Проблема вот в чем - создаю демона, который случает определеный порт (по UDP). Запускаю. Все ок.
Но потом, если я пытаюсь создать сокет из другого скрипта, чтобы послать что-то этому демону, то получают ошибку
"Обычно разрешается одно использование адреса сокета"
Я, конечно, понимаю, что в реальных ситауциях этого не будет, т.к. демон будет висеть на одной машине, а скрипт будет к нему коннектиться с другой. Но как мне побороть это у себя? Надо ведь как-то дебажить!?
Обычно разрешается одно использование адреса сокета
Started by *soulburner*, May 12 2007 04:36
6 replies to this topic
#1
Posted 12 May 2007 - 04:36
#2
Posted 12 May 2007 - 13:26
вирт. машина не катит?
или лень? )
или лень? )
#3
Posted 12 May 2007 - 17:56
А проще придумать не мог? есть сервер на нём есть листинг файлов попробуй парсить иначе поиск на прямую без базы будет крайней медленным.
Собственно.
1. Получи листинг с сервера. с помощью настройки под линукс dc++
2. Путём обработки файла загони это всё в mysql в таблицу с четкими гранями тоесть с грамотной архитектурой.
3. Хитрый sql запрос позволит тебе быстро работать с парой другой миллионов записей.
4. Напиши морду.
5. Напиши крон-скрипт проверки статуса шар с записью в базу.
Да и схема с сокетами будет зависима от работы и качества сети что не очень адекватно в связи с перспективой роста сети.
Другие же варианты приведут к заметной потери производительности и полному отсутствию многозадачности.
А текст так можно просто пример куска.
Собственно.
1. Получи листинг с сервера. с помощью настройки под линукс dc++
2. Путём обработки файла загони это всё в mysql в таблицу с четкими гранями тоесть с грамотной архитектурой.
3. Хитрый sql запрос позволит тебе быстро работать с парой другой миллионов записей.
4. Напиши морду.
5. Напиши крон-скрипт проверки статуса шар с записью в базу.
Да и схема с сокетами будет зависима от работы и качества сети что не очень адекватно в связи с перспективой роста сети.
Другие же варианты приведут к заметной потери производительности и полному отсутствию многозадачности.
А текст так можно просто пример куска.
<?php # áåð¸ì ГЁГ§ áà çû url_index #îïðåäåëÿåì upid_prev ГЁ upid_next # äåëà åì fopen include "function.php"; #include "includes\swich.php"; set_time_limit (0); // it may take long to index everything. $date = date ("Y-m-d H:i:s"); echo "START $date <br>"; $fp = fopen("compress.zlib://ftp://10.128.1.2/index.gz", "r"); #fgets Г·ГЁГІГ ГҐГ¬ ñòðîêó $new = true; $dir_old = "/"; $dirid_old = 1; $id = 0; $url = "http://xxx.ru"; $db->sql_query("INSERT INTO cron_gz VALUES ( null, '0', '$dir_old', '$url', '1', '$dirid_old', '0', null)"); #NULL, '$dir_old', '$url', '$dirid_old')"); while ($str=fgets($fp)){ # echo $str; switch ($str[0]) { case ".": $str_len= strlen ($str); $dir_new= substr ( $str, 1, ($str_len-3)); $name_len = strrpos ($dir_new , "/"); if ($new){$new = false; break;} if ((strpos($dir_new, $dir_old)) === 0){ $name = substr ($dir_new, $name_len+1, ($str_len-2)); $url = "http://xxx.ru" . $dir_new; $pat = $dirid_old; $db->sql_query("INSERT INTO cron_gz VALUES ( null, '0', '$name', '$url', '1', '$dirid_old', '0', null)"); # NULL, '$name', '$url', '$pat')"); $id = mysql_insert_id(); $dirid_old = $id; $dir_old = $dir_new; } else{ $serch_dir1 = substr ($dir_new, 0 , $name_len); $serch_dir = "http://xxx.ru" . $serch_dir1; $serch_dir = mysql_escape_string ($serch_dir); $result = $db->sql_query("SELECT * FROM cron_gz WHERE `url` = \"$serch_dir\""); $row = $db->sql_fetchrow($result); #echo $serch_dir; #echo ($row[id]); $dirid_old = $row['id']; #echo "<br>"; $name = substr ($dir_new, $name_len+1, ($str_len-2)); $url = "http://xxx.ru" . $dir_new; $pat = $dirid_old; $db->sql_query("INSERT INTO cron_gz VALUES ( null, '0', '$name', '$url', '1', '$dirid_old', '$0', null)"); #NULL, '$name', '$url', '$pat')"); $id = mysql_insert_id(); $dirid_old = $id; $dir_old = $dir_new; } break; case "-": $fil_new2 = substr($str ,1); $arr = str_word_count ( $fil_new2 , 2 ); $arr1 = array_keys ($arr); #$arr1[3] +13 ГГ Г· èìåГГЁ ôà éëà $fil_name = substr($str ,$arr1[3]+13); $fil_name = ltrim($fil_name); $uid_len = strlen($arr[$arr1[2]]); $nach =$arr1[2]+$uid_len+1; $size = substr ($str, $nach , $arr1[3]-$nach); # $konec = $arr1[3]-$nach; # echo "uid - $uid_len : nacalo - $nach : konec - $konec : size - $size"; # echo "<br>"; $url_fil = $url . "/" . $fil_name; $db->sql_query("INSERT INTO cron_gz VALUES ( null, '0', '$fil_name', '$url_fil', '0', '$dirid_old', '$size', null)"); #NULL, '$name', '$url', '$pat')"); # print_r ($arr); # echo "<br>"; # echo $fil_new3; # echo "<br>"; break; } } #case ïåðâûé ñèìâîë /* $lol = "lol iz good"; $dl = (strlen ($lol)) - 1; echo $lol[1-$dl]; */ $date = date ("Y-m-d H:i:s"); echo "STOP $date <br>"; $id = mysql_insert_id(); echo "çà ïèñêé $id"; ?>
#4
Posted 14 May 2007 - 03:26
Давай с обсуждением алгоритма сюда - http://swnet.spb.ru/...showtopic=11137 ?
А в этом топике хотелось бы услышать по поводу сабжа. Есть решения. Вирт. машина - уж очень ломает
А в этом топике хотелось бы услышать по поводу сабжа. Есть решения. Вирт. машина - уж очень ломает
#5
Posted 14 May 2007 - 17:34
Ну что, никто мне не поможет???? Надо тестить демона, слушающего порт и скрипт, передающий в этот порт на одной машине. Виртуалку не хочу.
#6
Posted 15 May 2007 - 18:31
вторая машина?
могу продать бюджетный вариант ))) смотри в купле/продаже(наверное лучшебы в юморе,но оно там ) )
могу продать бюджетный вариант ))) смотри в купле/продаже(наверное лучшебы в юморе,но оно там ) )
#7
Posted 15 May 2007 - 20:46
хы-хы. барыга =))))вторая машина?
могу продать бюджетный вариант ))) смотри в купле/продаже(наверное лучшебы в юморе,но оно там ) )
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users