|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 66858.5088 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
24.12.2010, 14:43
|
#1
|
Senior Member
Регистрация: 08.06.2007
Сообщений: 1,080
Бабло: $2147483647
|
Накидайте скриптец парни
Нужен простой скрипт, который бы брал из файла случайную строку и выводил всегда только ее на определенном урле, а на другом соответственно всегда только другую. Был у меня где-то такой, но проебался. Помню что там УРЛ приводился к какому-то постоянному числу и за счет этого выдиралась всегда одна и та же строка. Как-то сумбурно описал, но надеюсь понятно. Заранее благодарен!
|
|
|
24.12.2010, 14:57
|
#2
|
Сеньер Член
Регистрация: 03.04.2010
Сообщений: 1,738
Бабло: $280230
|
одна строка может выводиться на нескольких урлах?
урлы заранее известны?
|
|
|
24.12.2010, 14:59
|
#3
|
Senior Member
Регистрация: 08.06.2007
Сообщений: 1,080
Бабло: $2147483647
ТС -->
|
ТС
Цитата:
Сообщение от huanpedro
одна строка может выводиться на нескольких урлах?
урлы заранее известны?
|
да, может
заранее не известны
|
|
|
24.12.2010, 16:03
|
#4
|
Senior Member
Регистрация: 19.09.2009
Сообщений: 4,096
Бабло: $611825
|
Думать надо самое главное это определить по юрлу, каким он будет номером(
конечно можно присваивать юрлу случайный номер и записывать в файл, но все зависит сколько будет юрлов, если будет очень много, то будет тормозить
|
|
|
24.12.2010, 16:16
|
#5
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
из урла делаем хеш-число, например через контрольную сумму (функция crc32),
потом его нужно нормировать относительно общего кол-во строк в файле, и результатом нормирования будет номер нужной строки
|
|
|
24.12.2010, 16:59
|
#6
|
Senior Member
Регистрация: 30.06.2009
Адрес: Russia
Сообщений: 213
Бабло: $40105
|
PHP код:
$url = '/papka/'.md5($_SERVER["REQUEST_URI"]); if(!(file_exists($url))) { $array = file('papka/spisok_ssilok.txt'); $count = sizeof($array); $link = ''; for ($i = 1; $i <= 25; $i++) { $num = mt_rand(0,$count-1); $link =$link.$array[$num].'</br>'; }
$file=fopen($url,"w"); fputs($file,$link); fclose($file); }
else{ $link = file_get_contents($url);}
echo '$link';
Не совсем то, что тебе требовалось. Но немного переделать под свои нужды сам сможешь, я думаю. Инеблагодариатообижусь.
|
|
|
24.12.2010, 17:29
|
#7
|
Сеньер Член
Регистрация: 03.04.2010
Сообщений: 1,738
Бабло: $280230
|
Цитата:
Сообщение от chesser
из урла делаем хеш-число, например через контрольную сумму (функция crc32),
потом его нужно нормировать относительно общего кол-во строк в файле, и результатом нормирования будет номер нужной строки
|
Вот примерно так и я подумал, но если меняется кол-во и и порядок строк, то и меняются урлы на которых выводятся ссылки
|
|
|
24.12.2010, 17:42
|
#8
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
Цитата:
Сообщение от huanpedro
Вот примерно так и я подумал, но если меняется кол-во и и порядок строк, то и меняются урлы на которых выводятся ссылки
|
ага, а по-другому наверно только сохранять связи урл<->строка,
либо кол-во строк делать заведомо бОльшим хеш-числа, тогда это число и будет номером строки(без нормализации)
|
|
|
24.12.2010, 17:50
|
#9
|
Сеньер Член
Регистрация: 03.04.2010
Сообщений: 1,738
Бабло: $280230
|
Цитата:
Сообщение от chesser
ага, а по-другому наверно только сохранять связи урл<->строка,
либо кол-во строк делать заведомо бОльшим хеш-числа, тогда это число и будет номером строки(без нормализации)
|
но для этого нужно будет отдельную таблицу создавать, да и для одной строки может быт ьи тысяча урлов, это ж база может разростись нехило. НО так будет точнее всего(и наиболее маневреннее чтоли) и с распределением строк по урлам.
|
|
|
24.12.2010, 18:06
|
#10
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
а таблицу не обязательно, особенно если в проекте еще нет БД:
если урлов не более 100к, можно и в файлы(название файла=урл) для каждого урла засунуть либо номер(похоже на указатель на уч.памяти) строк, либо сами строку. - получиться тот же хеш, хотя можно и более продвинутые методы хеширования использовать, был бы смысл.
Но более 100к файлов в одной папке уже напряжно вроде для фс.
столько слов, а по делу помощи нет,
давайте уже кто-нибудь выдайте готовое решения для ТС
|
|
|
|