Скрипт редиректа - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.4409
BTC/USD64007.2926
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 15.03.2012, 17:40   #1
dim7
Senior Member
 
Аватар для dim7
 
Регистрация: 22.08.2008
Сообщений: 927
Бабло: $173840
По умолчанию Скрипт редиректа

Спалите решение или скрипт , для посыла юзеров, ботов, кого угодно, по списку урлов из txt файла.

url.txt со списком страниц на 10к паг например.
И последовательно на них редиректить и по кругу
__________________
LoadedCash - вечные ребилы -|- Налят Сюда
dim7 вне форума  
Старый 15.03.2012, 19:01   #2
masolit
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$urlFILE_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;
    }
}
masolit вне форума  
Старый 15.03.2012, 19:10   #3
creator123
Senior Member
 
Аватар для creator123
 
Регистрация: 05.01.2008
Сообщений: 1,676
Бабло: $213930
По умолчанию

masolit, ты тока представь что на каждый переход скрипт будет хуярить 10 тыс строк из файла еще и регэкспом.
Сервак охуеет жужжать, а юзер ждать.
creator123 вне форума  
Старый 15.03.2012, 19:14   #4
masolit
Senior Member
 
Регистрация: 18.08.2007
Сообщений: 1,098
Бабло: $199375
По умолчанию

Цитата:
Сообщение от creator123 Посмотреть сообщение
masolit, ты тока представь что на каждый переход скрипт будет хуярить 10 тыс строк из файла еще и регэкспом.
Сервак охуеет жужжать, а юзер ждать.
ну так можно переписать на построчное чтение если 10к строк это много для пыха
пс: где тут увидел что регепсом что-то хуярится из файла ? посмотри внимательней что там проверяется регулярками
masolit вне форума  
Старый 15.03.2012, 19:17   #5
creator123
Senior Member
 
Аватар для creator123
 
Регистрация: 05.01.2008
Сообщений: 1,676
Бабло: $213930
По умолчанию

ну я вижу что условие стоит внутри цикла а значит будет выполнятся на каждой итерации. его бы вынести за тело цикла и то уже серваку жить будет легче.
А вообще тут надо индексированно читать (из базы или из файла) или хотябы файл загрузить в память один раз на все коннекты
creator123 вне форума  
Старый 15.03.2012, 19:20   #6
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 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 и все будет ок
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 15.03.2012, 19:23   #7
masolit
Senior Member
 
Регистрация: 18.08.2007
Сообщений: 1,098
Бабло: $199375
По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
а я бы рандомом брал урлы:
я бы тоже, но чел просит по порядку

Последний раз редактировалось masolit; 15.03.2012 в 19:28.
masolit вне форума  
Старый 15.03.2012, 19:29   #8
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от masolit Посмотреть сообщение
я бы тоже, но чел просит по порядку
там у тебя в скрипте проще номер текущей строчки сохранять в файле, а лучше в apc_shared_vars или в memcached..... а то файл-локи вдруг будут мешать друг другу на большом трафе, все таки ФС медленней памяти
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 15.03.2012, 19:42   #9
dveredel
Читатель
 
Аватар для dveredel
 
Регистрация: 23.11.2007
Сообщений: 420
Бабло: $48745
По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
если urls.txt сделали на маке, а redirected_url.txt на виндовсе, то не будет работать. ну там про 10 13 надо как-то аккуратнее сделать.
PHP код:
ini_set("auto_detect_line_endings"true); 
dveredel вне форума  
Старый 15.03.2012, 19:53   #10
masolit
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$urlFILE_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: малясь переделал была ошибочка
masolit вне форума