Любитель пивасика
С нами с 14.06.03
Сообщения: 741
Рейтинг: 242
|
Добавлено: 11/12/04 в 02:27 |
Нужен простеньки скриптик а найти не могу мож есть у ко-го
вообщем есть списочек ссылок..нужно чтоб при нажатии дрон уходил в 20% на рандомную фхг..а остальные 80 на тдску...
P.S Сидж скрип не предлогать
|
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 11/12/04 в 02:38 |
держи. тока потесть, хотя вроде все правильно
Код: |
<?php
$p=20;//percent to FHG
$tds_url='http://tds.com';//TDS url
$base_file='file.txt';//FHG list file
mt_srand(make_seed());
$randval = mt_rand(0,100);
if($randval<=$p)
{
$u=file_get_contents($base_file);
$u=explode("\n",$u);
$randval = mt_rand(0,count($u)-1);
header('location: '.trim($u[$randval]));
}
else header('location: '.$tds_url);
function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
?>
|
|
|
|
|
С нами с 21.12.03
Сообщения: 119
Рейтинг: 166
|
Добавлено: 11/12/04 в 03:49 |
не факт, что будет уходить 20%
|
|
|
|
С нами с 21.12.03
Сообщения: 119
Рейтинг: 166
|
Добавлено: 11/12/04 в 04:18 |
уверен, что можно проще =))))
Код: |
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
function gen_txt2($p)
{
global $tmp_file2;
$c = 0;
$c2 = 0;
$p2 = 100-$p;
while(($c + $c2) < 100)
{
mt_srand(make_seed());
$randval = mt_rand(0,1);
if($randval == 1 && $c < $p)
{
$str .= '1';
$c++;
}
if($randval == 0 && $c2 < $p2)
{
$str .= '0';
$c2++;
}
}
$fp = fopen($tmp_file2, "w+");
flock($fp, 2);
fputs($fp, $str);
flock($fp, 3);
fclose($fp);
}
$p = 20; //percent to FHG
$tds_url ='http://tds.com'; //TDS url
$base_file ='./file.txt'; //FHG list file
$tmp_file1 ='./last1.tmp'; //Temp file n1
$tmp_file2 ='./last2.tmp'; //Temp file n2
$f = @fopen($tmp_file1,"a+");
flock($f,LOCK_EX);
rewind($f);
$tmp = fgets($f);
$par = explode("|",$tmp);
if(intval($par[0]) != $p)
{
$cu = 0;
gen_txt2($p);
}
else
{
$cu = intval($par[1]);
if($cu == 100)
$cu = 0;
}
ftruncate($f,0);
fwrite($f,$p.'|'.($cu+1).'|');
flock($f,LOCK_UN);
@fclose($f);
$str = @implode("",@file($tmp_file2));
if(intval($str[$cu]) == 1)
{
$arr = file($base_file);
mt_srand(make_seed());
$randval = mt_rand(0,count($arr)-1);
header('Location: '.trim($arr[$randval]));
}
else
{
header('Location: '.$tds_url);
}
|
|
|
|
|
Любитель пивасика
С нами с 14.06.03
Сообщения: 741
Рейтинг: 242
|
Добавлено: 11/12/04 в 15:40 |
Спасибо большое.+4
|
|
|
|
Любитель пивасика
С нами с 14.06.03
Сообщения: 741
Рейтинг: 242
|
Добавлено: 14/12/04 в 06:31 |
Подниму опять топик..
первый вариант с глюками работает (и ногда просто не открывает не одного урла)
а второй вообще не работает
где ошибка?..подскажите
|
|
|
|
С нами с 11.12.04
Сообщения: 99
Рейтинг: -344
|
Добавлено: 14/12/04 в 10:59 |
Попробуй так:
Код: |
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
$fhg = 20; // FHG percent
$tds_url = 'http://www.tds.com'; // TDS URL
$tmp_file = "file.tmp"; // temp file
$url_file = 'url.dat'; // urls file
if (!is_file($tmp_file)) // create if not exist
{
if ($f = @fopen($tmp_file,'w+'))
{
flock($f,LOCK_EX);
fputs($f,'0|0');
fflush($f);
flock($f,LOCK_UN);
@fclose($f);
}
}
$f = fopen($tmp_file,'r+');
flock($f,LOCK_EX);
list ($p1, $p2) = explode('|',trim(fgets($f)));
if ($p1+$p2==100) $p1 = $p2 = 0;
mt_srand(make_seed());
$l = 0;
do {
$rnd = mt_rand(0,1);
if ($rnd==0 && $p1<$fhg)
{
$l = 1; $p1++;
} else
if ($rnd==1 &&$p2<100-$fhg)
{
$l = 2; $p2++;
}
} while ($l==0);
ftruncate($f,0);
rewind($f);
fputs($f,$p1."|".$p2);
fflush($f);
flock($f,LOCK_UN);
fclose($f);
if ($l==2)
{
header('Location: '.$tds_url);
}
else
{
$urls = file($url_file);
$id = mt_rand(0,count($urls)-1);
header('Location: '.trim($urls[$id]));
}
|
Урлы в url.dat: каждая в отдельной строке без пустых строк.
|
|
|
|
С нами с 21.12.03
Сообщения: 119
Рейтинг: 166
|
Добавлено: 14/12/04 в 16:12 |
Rocket писал: | Подниму опять топик..
первый вариант с глюками работает (и ногда просто не открывает не одного урла)
а второй вообще не работает
где ошибка?..подскажите |
ну не знаю ... у меня все работает ...
|
|
|
|