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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно что-то вроде fork, сделать что-то, предварительно завершив 
:(
    Опции темы
szz
Дата 28.5.2006, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

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



Есть скрипт, который делает что-то очень доло, например минуту, но пользователю этого ждать не нужно - достаточно сообщить, что это "что-то" делается.
То есть:
Код

<?
echo 'долгое "что-то" успешно делается.';
do_something_long();
?>


   Если так написать, то пользователь не увидит сообщение пока скрипт полностью не завершится.
 В перле я просто форкаю нужный процесс - и он в заднем фоне выполняется, а браузер думает что страница полностью завершилась.

   Не предлагайте трюки - я щас делаю это с помощью аякса, но все же нужно более элегантное решение.

PS. Почему, кстати, нету общего раздела не для новичков? А то получается что все, что не попадает в другие разделы - вопрос новичка ))) 


--------------------
PM   Вверх
Diesel Draft
Дата 28.5.2006, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

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



если я ошыбаюсь то можна послать код на клиента, после которого он перестает принимать. Мне кажетса ето '\f', но никогда не пробывав и могу ошыбатса 


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Mal Hack
Дата 28.5.2006, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



PM ICQ   Вверх
szz
Дата 28.5.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

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



Ну и? Как мне помогут функции управлением вывода? Недогоняю, кажется это вообще из другого спектакля...  
Попробуйте написать вышеуказанный мой пример с применением этих функций.
Ошибку у вас нашел - ob_get_length() возвращает не в битах, а в байтах. 


--------------------
PM   Вверх
Mal Hack
Дата 28.5.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(szz @  28.5.2006,  22:02 Найти цитируемый пост)
Ну и? Как мне помогут функции управлением вывода? Недогоняю, кажется это вообще из другого спектакля...  

А если подумать?
Код
<?
ob_start();

echo 'долгое "что-то" успешно делается.';
flush();
do_something_long();
ob_end_flush();
?>
 
PM ICQ   Вверх
szz
Дата 29.5.2006, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

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



Не работает:
Код

<?
function do_something_long(){
    $return=0;
    $max=2000;
    for($i=0;$i<$max;++$i)
        for($j=0;$j<$max;++$j)
            $return++;
    return $return;        
}
ob_start();
echo 'Something long is processing in bg.';
flush();
do_something_long();
ob_end_flush();
?>

Надпись выпадает и браузер завершает загрузку только после того, как все выполнится - проверь сам. 


--------------------
PM   Вверх
Mal Hack
Дата 29.5.2006, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



На винде тестил? Тогда внимательно читай статью.
Если тестил на никсах, то это уже странно, приду буду тестить на никсах. 
PM ICQ   Вверх
szz
Дата 29.5.2006, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

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



Да, на винде. Ну, работать должно везде, так что это решение не годится.  Ладно, черт с ним.
   Исправь все-таки про ob_get_length() - в байтах оно! А то кто-нибудь будет неодумевать  smile  


--------------------
PM   Вверх
Vaulter
Дата 29.5.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



сорри шо на аглицком.
pcntl_fork
(PHP 4 >= 4.1.0, PHP 5)

pcntl_fork -- Forks the currently running process
Description
int pcntl_fork ( void )

The pcntl_fork() function creates a child process that differs from the parent process only in its PID and PPID. Please see your system's fork(2) man page for specific details as to how fork works on your system. 

On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution. On failure, a -1 will be returned in the parent's context, no child process will be created, and a PHP error is raised. 

Пример 1. pcntl_fork() example
Код

<?php

$pid = pcntl_fork();
if ($pid == -1) {
     die('could not fork');
} else if ($pid) {
     // we are the parent
     pcntl_wait($status); //Protect against Zombie children
} else {
     // we are the child
}

?> 

Замечание: Для Windows-платформ это расширение недоступно.

 


--------------------
PM MAIL WWW ICQ   Вверх
szz
Дата 29.5.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

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



ааааа...   Что виндоус такой драцкий?  smile  


--------------------
PM   Вверх
Mal Hack
Дата 29.5.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(szz @  29.5.2006,  07:23 Найти цитируемый пост)
Ну, работать должно везде, так что это решение не годится. 

Сервера на никсах, так что на отладочный тест в винде можно забить.
А вообще, это через Ajax делается. 
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0647 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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