Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт не останавливает работу 
:(
    Опции темы
Golda
Дата 13.4.2007, 09:36 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



И все-таки есть условия, при которых остановить скрипт можно. А именно, если он уже начал отдавать вывод клиенту.

Код

for ($i=1; $i < 11; $i++){
    sleep (2);
    echo $i;flush();
    $f = fopen ($i.".txt", "w");
    fputs ($f, $i);
    fclose ($f);
}


Здесь принципиально важно flush();
Если прервать нажать stop в броузере посреди процесса, прекратится и вывод, и создание файлов. Если  же использовать ignore_user_abort(1), прекратиться только вывод в броузере, а файлы будут создаваться по-пержнему


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
z-END
Дата 13.4.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 5
Всего: 102



Golda, действительно.. в таком случае скрипт останавливает работу 


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
CyClon
Дата 13.4.2007, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Цитата
int ignore_user_abort ( [bool setting] )

This function sets whether a client disconnect should cause a script to be aborted. It will return the previous setting and can be called without an argument to not change the current setting and only return the current setting. See the Connection Handling section in the Features chapter for a complete description of connection handling in PHP. 


Если скрипт невозможно остановить браузером (Нажатием кнопки "Остановить"), тогда зачем эта функция? ;)


--------------------
user posted image
PM   Вверх
Instal
Дата 13.4.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 30.7.2005

Репутация: нет
Всего: нет



Уважаемые, помогите разобраться с этим примером: 
Код

<? 
$fp = fopen ("test.txt", "w");    
fputs($fp, "test");
fclose($fp);
for ($e=1; $e<25; $e++) {
if ($e==20){
$fp = fopen ("test.txt", "w");    
fclose($fp);
}
if (filesize("test.txt")<1){
exit;
}
$fp = fopen ($e.".txt", "w");    
fclose($fp);

}
?>


По моей задумке скрипт при $e==20 и filesize("test.txt")<1 должен прекратить работу. 

Т.е. нужно чтобы скрипт реагировал именно на filesize("test.txt")<1.
Что-то опять я в дауне  smile 

Это сообщение отредактировал(а) Instal - 13.4.2007, 22:28
PM MAIL   Вверх
CyClon
Дата 14.4.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Скрипт пожалуйста с отступами, вообще не могу понять что там написано...


--------------------
user posted image
PM   Вверх
Golda
Дата 14.4.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Не могу понять смысла этого куска кода. Зачем Вы 24 раза открываете один и тот же файл test.txt на запись (тем самым стирая его содержимое) и ничего туда не пишете? Точно также открывате на запись и ничего не пишете в фалы <X>.txt. При таком подходе у Вас всегда все эти фалйы окажутся пустыми и на 20-ом шаге цикл должен обрываться. Зачем тогда шагов 24?

Ладно, возможно, Вы привели только выдержки из кода и содержательная часть опущена.
Если отвечать непосредственно на заданный вопрос, чтобы прекращать работу при $e==20 и filesize("test.txt")<1 просто всавьте их в одно условие 

Код

if ($e==20 && filesize("test.txt")<1) {
   exit;
}


Если же обязательно на 20-ом шаге сначала открыть test.txt, тогда так

Код

if ($e==20){
   $fp = fopen ("test.txt", "w");    
   fclose($fp);
   if (filesize("test.txt")<1){
      exit;
   }
}


Но сперва убедитесь, что Вы хотели сделать именно то, что написано у Вас в коде.


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Instal
Дата 15.4.2007, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 30.7.2005

Репутация: нет
Всего: нет



Golda, смысл скрипта таков.
Есть цикл, который я хочу остановить когда размер определенного файла будет равен нулю.
Т.е. 
Код

for ($e=1; $e<25; $e++) {
//во время цикла что-нибудь происходит таинственное ))
 if (filesize("test.txt")<1){    
    exit;    
 }
// если filesize файла равно нулю, то скрипт прекращает свою работу
}
}


Для этого я и написал предыдущий пример. Напишу еще проще:
Код

$fp = fopen ("test.txt", "w");     
fputs($fp, "test");    
fclose($fp);    
for ($e=1; $e<25; $e++) {
sleep(5);    
if (filesize("test.txt")<1){    
exit;    
}    
$fp = fopen ($e.".txt", "w");     
fclose($fp);    
}    


Во время работы скрипта закидываем на сервер пустой файл test.txt. Мне кажется, скрипт должен остановить свою работу, но этого не происходит!

Вот и хочу понять как сделать, чтобы скрипт останавливался когда размер определенного файла был равен нулю. Т.е. без разницы на каком этапе $e. Смысл в том, что сначала размер этого файла будет больше нуля. А потом равно и все, стоп.

Вроде понятно объяснил что хочу научиться делать?  smile 


PM MAIL   Вверх
Всемогущий
Дата 15.4.2007, 06:56 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



информация о размере и наличии файла кешируется из этого вывод на каждом этапе цикла делать 
 clearstatcache -- Очищает кэш состояния файлов



--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Instal
Дата 15.4.2007, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 30.7.2005

Репутация: нет
Всего: нет



Всемогущий, 
Спасибо. Теперь разобрался smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.