Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 27/05/12 в 15:02 |
из списка имен генерировались страницы с именами, но т.к. порой в страница получались с одинаковыми именами решил поставить функцию для создания трехсимвольных кодов которые должны были приписываться в конце.
вот сама функция:
Код: [развернуть] |
function generate_code($length = 3){
$num = range(0, 9);
$alf = range('a', 'h');
$_alf = range('l', 'y');
$symbols = array_merge($num, $alf, $_alf);
shuffle($symbols);
$code_array = array_slice($symbols, 0, (int)$length);
$code = implode("", $code_array);
return $code;
}
|
в процессе работы цикла была строка которая всё собирала в единое целое
Код: [развернуть] |
$gCode = generate_code();
$fileName = $fileName."-".$i."-".$getDomain."-".$gCode;
|
самое интересное что когда я испытывал этот генератор кода отдельно он генерил всё разное, но вот когда вставил в основной код получилось так:
Код: [развернуть] |
mco
aon
a08
p0a
sq8
nyw
u75
abx
x5d
и сново
mco
aon
a08
p0a
sq8
nyw
u75
abx
x5d
и так постоянно
|
даже предроложить немогу почему он генерил это всё по кругу.
самое интересное что даже когда я выключал комп, и утром стел продолжать работать эти коды вновь фигурировали
как так, ну мог предположить что глю, но вот после ресета всей системы сново, теряюсь в догадках.
в обработке было 10к строк
которые обрабатывались не одним пакетом, а в разное время
т.е. мог сначала 50 строк, потом через время еще 100, потом 5. а структура повтора этого кода не менялась
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 27/05/12 в 15:44 |
лень разбираться, почему так происходит, но ты маньяк
сделай
Код: | function generate_code() {
return substr(md5(microtime(true)), 0, 3);
}
|
и не мучайся
ну и сделай проверку
Код: | do {
$gCode = generate_code();
$TMPfileName = $fileName."-".$i."-".$getDomain."-".$gCode;
}
while(is_file($path_to_file.'/'.$TMPfileName));
$fileName = $TMPfileName;
|
и можно вообще без функции: $gCode = substr(md5(microtime(true)), 0, 3);
ЗЫ: может у тебя где-то как-то юзается srand()? вообще странно... какая у тебя версия пхп? надеюсь 5.+
если есть в коде srand() с параметром убей его. array_shuffle сам инициализирует гсч, а если написать srand(число int) тогда будет одинаковая последовательность. если версия пхп < 4.2.0, тогда наоборот напиши srand(); - без параметров.
|
|
|
|
С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506
|
Добавлено: 27/05/12 в 22:25 |
а еще вроде в винде srand до сих пор одинаковую последовательность генерит
в любом случае вариант от AWD самый нормальный
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |