|
|
|
|
|
для: Trianon
(06.04.2010 в 13:19)
| | Перечитал мануал:
http://www.php.net/manual/en/function.ob-start.php
Но там в описании функции сказано лишь то, что у нее есть второй необязательный параметр $chunk_size и если он принимает значение по умолчанию(0), то вывод будет отправлен только в конце работы скрипта. Отдельной директивы chunk_size в php.ini тоже не нашел.
Скажите пожалуйста, какой величиной ограничен размер буфера и как ее регулировать? | |
|
|
|
|
|
|
|
для: tihonko
(06.04.2010 в 08:57)
| | >Нужно вывод перед отправкой сложить в буфер.
>Тогда будет неважно в какой последовательности у вас в коде фигурируют заголовки и вывод - PHP все равно ничего не отправит до того момента, пока не исполнит весь скрипт.
Это, мягко говоря, несовсем так.
Размер буфера ограничен. | |
|
|
|
|
|
|
|
для: gvidon
(06.04.2010 в 09:04)
| | Пожалуйста! | |
|
|
|
|
|
|
|
для: tihonko
(06.04.2010 в 08:57)
| | Огромное СПАСИБО tihonko !!!! .
Я включил буферизацию и все заработало :)
Временно буду использовать буфферизацию но немного позже подумаю о переделке скрипта . | |
|
|
|
|
|
|
|
для: gvidon
(06.04.2010 в 07:18)
| | В php.ini есть специальная директика - output_buffering. Ее значение по умолчанию - 0. Это говорит о том, что весь вывод сразу направляется клиенту, как только он прочитывается в скрипте. В этом случаи вы не можете отправить HTTP-заголовки после того как уже началась передача тела HTTP-документа.
Если не хотите переписывать код, то можно выйти из этой ситуации следующий способом:
Нужно вывод перед отправкой сложить в буфер. Тогда будет неважно в какой последовательности у вас в коде фигурируют заголовки и вывод - PHP все равно ничего не отправит до того момента, пока не исполнит весь скрипт.
Активировать буферизацию вывода можно следующими путями:
1. Изменить значение директивы output_buffering на on
2. Активировать буферизацию вывода в самом php - скрипте с помощью функции ob_start()
Первый вариант вам подойдет только в том случаи, если вы можете изменять файл php.ini.
Если такой возможности нет и вы решите использовать второй вариант, то в самом начале скрипта разместите следующий код:
<?php
ob_start();
?>
<html>
<head>
<title></title>
</head>
<body>
..................
..................
|
P.S. пока печатал ответ, тоже самое уже сказали)) | |
|
|
|
|
|
|
|
для: gvidon
(06.04.2010 в 08:48)
| | Если вы решили писать на РНР, то читайте мануал, учебники. Не изучите вы его никогда, задавая лишь вопросы.
Решить вашу проблему можно двумя способами - первый буферизация вывода (читайте в мануале, что это такое, в первую очередь, а уж потом вопросы), и второй, это переписать свой скрипт так, чтобы отправление заголовка было до любого вывода в браузер. Это сделать не трудно в вашем коде, вот тут можно не заглядывать в мануал, а лишь немного подумать. Попробуйте сперва сами это сделать, а если не получится, тогда с вопросом... | |
|
|
|
|
|
|
|
для: sim5
(06.04.2010 в 08:29)
| | а каким образом можно перенаправить на другую страницу тогда ? | |
|
|
|
|
|
|
|
для: gvidon
(06.04.2010 в 07:59)
| | Зачем мне жать на вашу кнопку? Такого быть не может.
<?
<?
//не реагируем на ошибки
error_reporting(~E_ALL);
//и отключаем их вывод
ini_set("display_errors", "off");
?>
<form action=""><input type="submit" name="sender" value="GO"></form>
<?
//а перехода все равно не будет
if(isset($_GET['sender'])) header('location: test.php');
?>
|
А теперь две первыых строки кода пропишите так:
error_reporting(E_ALL);
ini_set("display_errors", "on");
Запустите, что получите?
Читайте мануал и пишите не так как вам хочется, а как требуется. | |
|
|
|
|
|
|
|
для: sim5
(06.04.2010 в 07:55)
| | А если вывод ошибки подавлен то почему все таки директива сработала и у меня открылась следующая страница ??? если не тяжело нажмите на кнопку ок . | |
|
|
|
|
|
|
|
для: gvidon
(06.04.2010 в 07:50)
| | Вот только не надо о том, что заработало. У вас не заработало (перехода не произойдет), а просто подавлен вывод ошибок на другом сервере. Читайте мануал и исправляйте свой скрипт. | |
|
|
|
|