Html код загружается после обработки php кода.

xamelyon

Новичок
Html код загружается после обработки php кода.

Здравствуйте.

Есть две страницы 1.php и 2.php.
В 1.php ссылка на 2.php.
В 2.php прописаны сперва html код и потом php код.

Проблема следующая:
при переходе с 1.php на 2.php, html код 2.php страницы появляется только после обработки php кода.

Спасибо.
 
спасибо, попробую искать (вывод браузер), хотя в первые 5 тем не нашёл ответа.

-~{}~ 16.01.08 17:25:

flush(); не помогает

-~{}~ 16.01.08 17:33:

в 2.php:
вывод html кода
выполнение функции curl().

всё это занимает 1 мин после чего выводится html код.

из Output Control Functions ничего не помогает.
 
html код 2.php страницы появляется только после обработки php кода.
А может так и должно быть?

Что у тебя там за код такой?

-~{}~ 16.01.08 17:37:

Телепатия отсутствует.
 
в 2.php:
вывод html кода
выполнение функции curl().

и всё.

-~{}~ 16.01.08 17:40:

при нажатии на 2.php в течение 1 мин остаётся содержимое 1.php, и после обработки функции curl() отображается содержимое 2.php
 
если ты курл юзаешь, то видимо не локальный фай лерёшь. Тогда не удивительно, что есть задержка.
Но остаётся вопрос, что у тебя за код.

Покажи, как ты инициируешь курл и делаешь вывод полученой инфы.
 
basboy
вопрос поставлен достаточно ясно.

xamelyon
не буду говорить насчёт (не)правильности такого подхода, но может поможет:
отправить Content-Length + ignore_user_abort + ob_flush() + flush()
 
1.php:
--------------------------------
<a href=2.php>2</a>
--------------------------------
2.php:
--------------------------------
<?
echo "this is 2.php";

$url="http://www.example.com";


$ch = curl_init();
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXY,"http://proxy.shr.secureserver.net:3128");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 360);
$result_curl=curl_exec ($ch);
$var_err_curl.=curl_error($ch);
curl_close ($ch);

?>
--------------------------------
 
в том то и дело что не выводится результат, если бы выводился результат то логично что нужно чтоб curl() выполнился и потом вывел результат.

выводтся просто надпись:
echo "this is 2.php";

у меня это выглядет так:
echo "Please wait ...";
 
PHP:
ob_start();
echo microtime();
header('Content-length: '.ob_get_length());
header('Connection: close');
ob_end_flush();
flush();

// какой угодно код

вот не знаю будет ли это работать если php не модулем стоит.
 
xamelyon
Ну ты тупишь...
Вывод результата делается обычно через echo, ну или через print, ну можешь ещё юзать <?=$val?> и это не предел вариантов.

А где в твоем коде это, я не вижу.

Если уж не хочешь это юзать, так разберить в опциях курла.
Сюда,
http://www.php.net/manual/ru/function.curl-setopt.php

и читай про CURLOPT_RETURNTRANSFER, который ты устанавливаешь в 1
 
_basboy_

почему ты не понимаешь что мне всё равно сколько времени будет выполнятся curl(), результаты curl() я записываю в базу данных.

мне нужно чтобы скрипт до выполнения curl() вывел на экран строку:
echo "this is 2.php";
или
echo "Please wait ...";
или
print "Please wait ...";
не имеет значения.

да я установил CURLOPT_RETURNTRANSFER-1 потому что мне не нужно вывести результат curl(), я просто записываю результат в базу данных

-~{}~ 17.01.08 13:03:

_Gas_
ob_start();
echo "this is 2.php";
echo microtime();
header('Content-length: '.ob_get_length());
header('Connection: close');
ob_end_flush();
flush();

curl(); .....

работает но вот только curl() не выполняется, т.е. любой код после flush(); не выполняется.
 
почему ты не понимаешь
туплю наверное.

мне нужно чтобы скрипт до выполнения curl() вывел на экран строку:
echo "this is 2.php";
или
echo "Please wait ...";
или
print "Please wait ...";
не имеет значения.
выводи большее количество символов.
Имеет смысл оформить в таблицу или что-то типо того.

Одна строчка это мало.

В подобном случае я експерементировал с объемом данных, который будет отображен. подходит и вариант со скрытым текстом.

Т.е. выводи в браузел моного любого текста коментарием, а потом твоё мообщение.
Должно получиться
 
xamelyon
работает но вот только curl() не выполняется, т.е. любой код после flush(); не выполняется.
после flush() у меня стоит sleep(10);mail(...);

1) apache 1.3.39 + mod_php 5.1.2 и mod_php 4.4.5 - работает, сразу вывод в броузер, потом письмо.

2) apache 1.3.39 + php 5.2.5 + fastcgi - ждёт 10 сек.

Значит не нужно этого хотеть.
 
Сверху