powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
41 сообщений из 41, показаны все 2 страниц
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479001
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли как нибудь через PHP сказать броузеру что он уже все получил, а именно что уже все данные ему пришли и чтобы он закрывал соединение, но при этом чтобы на PHP можно было делать обработки данных далее.

O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479008
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может, закрыть файл стандартного вывода?
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479017
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле, что это значит??

O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479023
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleВ смысле, что это значит??
именно в PHP не знаю как, а в CGI-програмах достаточно закрыть файл стандарного вывода.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479025
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще какбы ответ интересный, учитывая что это форум по PHP



O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479054
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleВообще какбы ответ интересный, учитывая что это форум по PHP
я дал идею

если хотите на PHP, то пожалуйста:
fclose(STDOUT);
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479077
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вариант, еще можно посмотреть на register_shutdown_function
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479177
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft OracleВообще какбы ответ интересный, учитывая что это форум по PHP
я дал идею

если хотите на PHP, то пожалуйста:
fclose(STDOUT);

Ругается, что не тот аргумент, вообще не работает, может я что то забыл.?
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479264
JASterus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft OracleВообще какбы ответ интересный, учитывая что это форум по PHP
я дал идею

если хотите на PHP, то пожалуйста:
fclose(STDOUT);

fclose (PHP 3, PHP 4, PHP 5)

fclose -- Закрывает дескриптор файла

bool fclose ( resource handle )

Функция закрывает файл, на который указывает handle.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Дескриптор должен указывать на файл, открытый ранее с помощью функции fopen() или fsockopen().

так что твой совет - бред.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479273
JASterus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleМожно ли как нибудь через PHP сказать броузеру что он уже все получил, а именно что уже все данные ему пришли и чтобы он закрывал соединение, но при этом чтобы на PHP можно было делать обработки данных далее.

O*R*A*C*L*E
(Don't despair my little fried...)

а, вообще, поподробнее можно ли, для чего это надо?
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479286
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle miksoftfclose(STDOUT);

Ругается, что не тот аргумент, вообще не работает, может я что то забыл.?
на http://www.php.net/function.register_shutdown_function нашел такую фразу:
Руководство по PHPTo end the connection, but continue background processing, other languages offer ways to close STDOUT. This is impossible in PHP, as other submissions point out. In fact, the STDOUT stream has no name in a PHP web script.

register_shutdown_function() is useful, and has nothing to do with that problem.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479289
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит ситуация, вы нажимаете кнопку (на клиенте- затем пост и т.д) и сервер начинате что то делать, к примеру обновил даные и вернул, но надо потом еще в архиве обновить много чего, дык это надо сделать вообще на заднем фоне, чтобы юзер не знал об это чтобы часы вместо кусрора у него не горели и т.д.

O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479303
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JASterusДескриптор должен указывать на файл, открытый ранее с помощью функции fopen() или fsockopen().

так что твой совет - бред.
а про стандартные потоки ввода, вывода и ошибок ты никогда не слышал?
PHP 4.3 and above automatically have STDOUT, STDIN, and STDERR openned
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479315
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос задан неверно

нужно использовать выполнение задач по расписанию типа крона в юниксе или at в виндовс. Иначе после разрыва соединения с браузером веб-сервер будет (обязан) убивать все процессы порождённые в этом соединении.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479320
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024вопрос задан неверно

нужно использовать выполнение задач по расписанию типа крона в юниксе или at в виндовс. Иначе после разрыва соединения с браузером веб-сервер будет (обязан) убивать все процессы порождённые в этом соединении.


Не нефиге не согласен, там ставится опция чтобы не отлючать процесс, крон не катит здесь, именно такой подход надо Поверь мне...
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479350
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleВообще какбы ответ интересный, учитывая что это форум по PHP



O*R*A*C*L*E
(Don't despair my little fried...)
не только, еще по Perl, JS , HTML ...
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479367
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
O*R*A*C*L*E
(Don't despair my little fried...)

Да именно, Коля ты прав, давно не слышал тебя, как дела у нашего любимого Модератора, кстати с НГ и РОЖД.. тебя.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479379
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант, который вчера обсуждался
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479386
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОФФ
дела отлично, работы после праздников накопилось, времени хватает только проверять топики на соответствие правилам

спасибо за поздравления, тебя тоже с праздниками !
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479399
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Oracleкрон не катит здесь, именно такой подход надо Поверь мне...Ну так убедите нас в том, что corn не катит - у нас же не клуб джентельменов ;)
Сколько уже раз говорилось, что описывать надо задачу, а не её кусок, по которому нифига не видно - но до людей всё равно не доходит, что телепатов на форуме нет.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479402
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
*corn не катитcron конечно же... поспешиьш - людей насмешишь :)
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33479827
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* *corn не катитcron конечно же... поспешиьш - людей насмешишь :)

Гест тебя тут только не хватало, что ты вечно со своим мылом лезешь, зарегся сначала...
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33480061
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Oracle * *corn не катитcron конечно же... поспешиьш - людей насмешишь :)Гест тебя тут только не хватало, что ты вечно со своим мылом лезешь, зарегся сначала...Может вам ещё и денег дать на блюдечке с голубой каёмочкой? А что вы собственно хотели со своими костылями? Чтобы я вам поддакивал, приговаривая "какое экстраординарное парадоксальное решение никому неизвестной надуманной проблемы, а PHP - гавно - такой вещи делать не позволяет - авторы явно были настолько тупы, что не додумались до столь революционной идеи"?
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33480063
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Ах да. Решение, при чём очевидное - конечно же существует. Надо просто завершить выполнение скрипта. Тогда браузер отвалится.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33480066
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чем всеже register_shutdown_function не устраивает?
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33480196
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Anjey aka PMа чем всеже register_shutdown_function не устраивает?Не работает оно должным образом. По крайней мере - в свежих версиях.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33480200
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для проктологов
тынц
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33481407
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anjey aka PMдля проктологов
тынц

Да, то что надо, супер, спасибо...
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33481434
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да не за что :)
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33485572
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руководство по PHPTo end the connection, but continue background processing, other languages offer ways to close STDOUT. This is impossible in PHP, as other submissions point out. In fact, the STDOUT stream has no name in a PHP web script.
register_shutdown_function() is useful, and has nothing to do with that problem.

Хотите "сложный" (лишних строчек 30 :) ), но "правильный" способ для продолжения вычислений после завершения основоного скрипта? Реализовать при помощи SOAP (или какого иного RPC) вызов удалённой функции в стиле "выстрелил и забыл". У меня с NuSOAP это работает. Правда, отлаживать удалённую функцию - морока.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33494319
Tellur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenХотите "сложный" (лишних строчек 30 :) ), но "правильный" способ для продолжения вычислений после завершения основоного скрипта?
Ждем с нетерпением
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33494761
Ksnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В phpclub был услышан ответ.
Своими словами - нужно послать header('ContentLength:') с правильной длиной. Возможно, еще и "HTTP 200 OK"
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33495356
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
KsnkВ phpclub был услышан ответ. Баян ;)
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33497301
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TellurЖдем с нетерпением
А чего ждать? Формула C=2*A+B^2, A и B известны, C самим считать надо:).

На клиенте:
Код: plaintext
1.
2.
3.
4.
5.
6.
// Подключаем код NuSOAP
require_once('../phplibs/nusoap.php'); 
// Создаем экземпляр клиента 
$client = new soapclient($uri);
<...>
$client->call("Agree_Sentences_Web_Service", array('input_data'=>$input_data));

На сервере:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// Подключаем код NuSOAP 
require_once('../phplibs/nusoap.php'); 
// Создаем экземпляр сервера 
$server = new soap_server; 
// Регистрируем предоставляемый метод
$server->register('Agree_Sentences_Web_Service'); 
// Определяем метод как функцию PHP 
function Agree_Sentences_Web_Service($input_data){
<...>
}

KsnkСвоими словами - нужно послать header('ContentLength:') с правильной длиной.

А как узнать правильную длину? Нет, ну можно, конечно, указать заведомо достаточную длину (напр. 50 Кб), "добить" пробелами, после чего пойти выполнять задачу но... Неуважение это к траффику пользователя - а вдруг у него модем и 50 Кб для него - полчаса (утрировано)?
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33497883
Ksnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KsnkСвоими словами - нужно послать header('ContentLength:') с правильной длиной.

А как узнать правильную длину? ...[/quot]
Не побоюсь процитировать :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
And if you need to output something to the client?s browser before executing the code in the background:

<?php

header("HTTP/1.1 200 OK");

$text = 'Your html code here';

// IE hack to get the flush to work. Not needed for FF.
$text = strlen($text) >  256  ? $text : str_pad($text,  256 );

ob_start();
  echo $text;
  $size = ob_get_length();
  header("Content-Length: $size");
ob_end_flush();
flush();

// code to be run in background starts here.
// And, of course, no output to the client?s browser from here.

?>
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33498897
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, до strlen($text) я как-то додумался :). Проблема в том, что в этом случае в переменной $text у меня должен быть <b>весь</b> выводимый HTML. Что не всегда удобно, особенно если на стороне клиента используется JavaScript, который не выносится в отдельный файл. Приходится экранировать спецсимволы для JavaScript... потом для PHP... а потом долго и тяжело отлаживать. Да и с точки зрения ресурсов сервера - работа с длинными строками реализована на PHP, даже если это PHP 5.1, не самым оптимальным образом.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33499460
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
AlexTheRavenПроблема в том, что в этом случае в переменной $text у меня должен быть <b>весь</b> выводимый HTML.Никакой проблемы нет.особенно если на стороне клиента используется JavaScript, который не выносится в отдельный файл. Приходится экранировать спецсимволы для JavaScript...Полнейшая чепуха. Всё остаётся именно так, как и было.Да и с точки зрения ресурсов сервера - работа с длинными строками реализована на PHP, даже если это PHP 5.1, не самым оптимальным образом.Опять ерунду пишете.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33503458
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Никакой проблемы нет.
На вкус, на цвет, на понимание, что такое хорошо, а что такое плохо.
*Полнейшая чепуха. Всё остаётся именно так, как и было.
Так, как и было, остаётся либо javascript, либо всё остальное (если не плевать на W3C, конечно). Подумайте почему.
*Опять ерунду пишете.
Попробуйте в цикле сделать строку из 10'000'000 пробелов. У меня больше 30 секунд при ~100% загрузки процессора, однако. Оптимально, говорите? На VBA и то быстрее.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33503548
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
AlexTheRaven *Никакой проблемы нет.На вкус, на цвет, на понимание, что такое хорошо, а что такое плохо.То, что вы не можете воспользоваться ГОТОВЫМ решением, не говорит о том, что его не существует. Если вам не понятны функции, которые здесь приводились - загляните в мануал да посмотрите, что они делают. *Полнейшая чепуха. Всё остаётся именно так, как и было.Так, как и было, остаётся либо javascript, либо всё остальное (если не плевать на W3C, конечно). Подумайте почему.См. выше. Что тут думать, если существующее решение это практически никак не затрагивает.e *Опять ерунду пишете.Попробуйте в цикле сделать строку из 10'000'000 пробелов. У меня больше 30 секунд при ~100% загрузки процессора, однако. Оптимально, говорите? На VBA и то быстрее.А VBA кроме генерирования 10 миллионов пробелов больше ни на что не способен - это единственный круг задач, который он умеет решать? А какую смысловую нагрузку носит ваш пример в реальной жизни? Никогда не видел смысла в синтетических тестах.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33505456
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*А VBA кроме генерирования 10 миллионов пробелов больше ни на что не способен - это единственный круг задач, который он умеет решать? А какую смысловую нагрузку носит ваш пример в реальной жизни? Никогда не видел смысла в синтетических тестах.

Что может делать VBA, можете спросить на форуме MS Access. Много чего. Легче спросить, чего не может. Впрочем, если говорить ещё и о VB - то я бы на нём разве что ядро ОС да драйвера не посоветовал писать.

Насчёт того, что VBA быстрее - я неправ. У него (под Excel) только на первые 100'000 итераций уходит 30 сек, причём с увеличением длины скорость конкатенации логарифмически уменьшается. А вот exeшник, написанный и скомпиллированный в VB 6, справляется с 10'000'000 примерно за 5 секунд, и скорость конкатенации - линейная.

Синтетический тест имеет очень простой смысл. Допустим надо сделать дамп БД, да так, чтобы в этом дампе над данными ещё кое-какие манипуляции проводились. Чтобы сделал дамп из PostgreSQL - и можно было развернуть в SQLite, и наоборот, чтобы искусственные идентификаторы "выравнивались", sequence'ы переставлялись. Размер файла - как раз порядка пока порядка 50 Мб. Стандартные утилиты не умеют. Как сделать просто и кроссплатформенно? Написать на PHP, что я и сделал. Работает до-о-о-олго. Хотя код вылизан. Проверено: на конкатенацию уходит 2/3 времени.
...
Рейтинг: 0 / 0
(PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
    #33505642
Ksnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexTheRaven
Синтетический тест имеет очень простой смысл. Допустим надо сделать дамп
...
Проверено: на конкатенацию уходит 2/3 времени.

Не кажется ли вам, что от темы топика разговор несколько отошел?

Кстати, генерировать миллионы пробелов проще функцией str_repeat.
А если чуть серьезнее, вот мысль, которая возможно вам поможет с вашим "кроссплатформенным" скриптом.
Код: plaintext
1.
2.
3.
4.
5.
6.
$s=str_repeat("x",$cnt);
for($i= 0 ;$i<$cnt;$i++) $s[$i]=" ";
// это вариант работает быстрее на больших строках
$s='';
for($i= 0 ;$i<$cnt;$i++) $s.=" ";
// это вариант работает быстрее на маленьких строках
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Можно ли как нибудь через PHP сказать броузеру что он уже все получил
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]