[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скрипт вытаскивания строк
alerzo
Здравствуйте, помогите сделать скрипт нормальным
вообщем задача, человеку при заходе на страницу со скриптом отдается текст в формате
логин:пароль
вот скрипт

$f=file('mail.txt'); //открываем файл mail.txt
$s=$f[0]; //берем первую строку
echo $s;
unset($f[0]); //удаляем первую строку
file_put_contents('mail.txt', $f); //записываем без первой строки

Вообщем какая проблема встала. Обращение к скрипту очень быстро и частое, он иногда глючит и записывает в файл какие то знаки вопроса.
Помогите пожалуйста сделать скрипт который работал бы стабильно при больших запросах.
И еще, удаления строк не обязательно, в реальности хотелось бы чтобы скрипт просто мешал строки (по очереди) т.е. показал первую и записал в конец и так далее.
alerzo
не ужели никто не может помочь user posted image
walerus
file_put_contents('mail.txt', $f, LOCK_EX ); //записываем без первой строки
попробуй так... ставить блокировку
alerzo
не получается, если скрипт получает одновременно 3-5 запросов он удаляет вообще весь файл откуда берет строки или стирает по нескольку тысяч за раз
walerus

$file = "mail.txt";

// Блокируем файл.
$f = fopen( $file, "rb" ) or die( "Не могу открыть файл!" );
flock( $f, LOCK_EX ); // ждем, пока мы не станем единственными
$contents = stream_get_contents( $f );
fflush( $f ); // сбрасываем буферы на диск
flock( $f, LOCK_UN ); // освобождаем файл
fclose( $f );

$contents = explode( "\n", $contents );

$tmp = array_shift( $contents );
array_push( $contents, $tmp );

// Блокируем файл.
$f = fopen( $file, "w+b" ) or die( "Не могу открыть файл!" );
flock( $f, LOCK_EX ); // ждем, пока мы не станем единственными
fwrite( $f, implode( "\n", $contents ) );
fflush( $f ); // сбрасываем буферы на диск
flock( $f, LOCK_UN ); // освобождаем файл
fclose( $f );

тогда так пробуй...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.