|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 64007.2926 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
15.03.2012, 17:40
|
#1
|
Senior Member
Регистрация: 22.08.2008
Сообщений: 927
Бабло: $173840
|
Скрипт редиректа
Спалите решение или скрипт , для посыла юзеров, ботов, кого угодно, по списку урлов из txt файла.
url.txt со списком страниц на 10к паг например.
И последовательно на них редиректить и по кругу
|
|
|
15.03.2012, 19:01
|
#2
|
Senior Member
Регистрация: 18.08.2007
Сообщений: 1,098
Бабло: $199375
|
Вот опять я набыдлокодил, не уверен что пашет как нужно ибо давно не кодил на пыхе, надеюсь придут спецы перепишут как нужно покрасивее.
PHP код:
<?php $url_file = file("urls.txt"); // тут хранить урлы на которые делаем редирект $url_redirected_file = "redirected_url.txt"; // тут будут складыватся урлы на которые уже был редирект $url_redirected_array = file($url_redirected_file);
foreach ($url_file as $url) { if (!in_array($url, $url_redirected_array)) { if (preg_match("!google|msn|live|altavista|ask|yahoo|aol|cnn|weather|alexa!i", $_SERVER['HTTP_REFERER'])) { preg_match("![\?\&]q=([^&]+)|[\?\&]query=([^&]+)|[\?\&]p=([^&]+)|[\?\&]keywords=([^&]+)!i", $_SERVER['HTTP_REFERER']); file_put_contents($url_redirected_file, $url, FILE_APPEND); header("Location: {$url}"); exit; } } elseif ($url_redirected_array[count($url_redirected_array) - 1] == $url_file[count($url_file) - 1]) { $handle = fopen($url_redirected_file, "w"); fclose($handle); header("Location: {$url}"); exit; } else { continue; } }
|
|
|
15.03.2012, 19:10
|
#3
|
Senior Member
Регистрация: 05.01.2008
Сообщений: 1,676
Бабло: $213930
|
masolit, ты тока представь что на каждый переход скрипт будет хуярить 10 тыс строк из файла еще и регэкспом.
Сервак охуеет жужжать, а юзер ждать.
|
|
|
15.03.2012, 19:14
|
#4
|
Senior Member
Регистрация: 18.08.2007
Сообщений: 1,098
Бабло: $199375
|
Цитата:
Сообщение от creator123
masolit, ты тока представь что на каждый переход скрипт будет хуярить 10 тыс строк из файла еще и регэкспом.
Сервак охуеет жужжать, а юзер ждать.
|
ну так можно переписать на построчное чтение если 10к строк это много для пыха
пс: где тут увидел что регепсом что-то хуярится из файла ? посмотри внимательней что там проверяется регулярками
|
|
|
15.03.2012, 19:17
|
#5
|
Senior Member
Регистрация: 05.01.2008
Сообщений: 1,676
Бабло: $213930
|
ну я вижу что условие стоит внутри цикла а значит будет выполнятся на каждой итерации. его бы вынести за тело цикла и то уже серваку жить будет легче.
А вообще тут надо индексированно читать (из базы или из файла) или хотябы файл загрузить в память один раз на все коннекты
|
|
|
15.03.2012, 19:20
|
#6
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
masolit, если urls.txt сделали на маке, а redirected_url.txt на виндовсе, то не будет работать. ну там про 10 13 надо как-то аккуратнее сделать.
а я бы рандомом брал урлы:
PHP код:
<?php
$urls = file("urls.txt"); $rand_key = array_rand($urls);
header("Location: " . $urls[$rand_key]);
?>
ps: если трафа будет много, то надо написать правильный конфиг для nginx и все будет ок
|
|
|
15.03.2012, 19:23
|
#7
|
Senior Member
Регистрация: 18.08.2007
Сообщений: 1,098
Бабло: $199375
|
Цитата:
Сообщение от chesser
а я бы рандомом брал урлы:
|
я бы тоже, но чел просит по порядку
Последний раз редактировалось masolit; 15.03.2012 в 19:28.
|
|
|
15.03.2012, 19:29
|
#8
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
Цитата:
Сообщение от masolit
я бы тоже, но чел просит по порядку
|
там у тебя в скрипте проще номер текущей строчки сохранять в файле, а лучше в apc_shared_vars или в memcached..... а то файл-локи вдруг будут мешать друг другу на большом трафе, все таки ФС медленней памяти
|
|
|
15.03.2012, 19:42
|
#9
|
Читатель
Регистрация: 23.11.2007
Сообщений: 420
Бабло: $48745
|
Цитата:
Сообщение от chesser
если urls.txt сделали на маке, а redirected_url.txt на виндовсе, то не будет работать. ну там про 10 13 надо как-то аккуратнее сделать.
|
PHP код:
ini_set("auto_detect_line_endings", true);
|
|
|
15.03.2012, 19:53
|
#10
|
Senior Member
Регистрация: 18.08.2007
Сообщений: 1,098
Бабло: $199375
|
PHP код:
<?php $url_file = file("urls.txt"); // тут хранить урлы на которые делаем редирект $url_redirected_file = "redirected_url.txt"; // тут будут складыватся урлы на которые уже был редирект $url_redirected_array = file($url_redirected_file);
foreach ($url_file as $url) { if (!in_array($url, $url_redirected_array) and $url != $url_file[count($url_file) - 1]) { if (preg_match("!google|msn|live|altavista|ask|yahoo|aol|cnn|weather|alexa!i", $_SERVER['HTTP_REFERER'])) { preg_match("![\?\&]q=([^&]+)|[\?\&]query=([^&]+)|[\?\&]p=([^&]+)|[\?\&]keywords=([^&]+)!i", $_SERVER['HTTP_REFERER']); file_put_contents($url_redirected_file, $url, FILE_APPEND); header("Location: {$url}"); exit; } } elseif ($url == $url_file[count($url_file) - 1]) { $handle = fopen($url_redirected_file, "w"); fclose($handle); header("Location: {$url}"); exit; } else { continue; } }
ps: малясь переделал была ошибочка
|
|
|
|