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 кода.

Спасибо.
 

xamelyon

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

-~{}~ 16.01.08 17:25:

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

-~{}~ 16.01.08 17:33:

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

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

из Output Control Functions ничего не помогает.
 

basboy

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

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

-~{}~ 16.01.08 17:37:

Телепатия отсутствует.
 

xamelyon

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

и всё.

-~{}~ 16.01.08 17:40:

при нажатии на 2.php в течение 1 мин остаётся содержимое 1.php, и после обработки функции curl() отображается содержимое 2.php
 

basboy

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

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

Gas

может по одной?
basboy
вопрос поставлен достаточно ясно.

xamelyon
не буду говорить насчёт (не)правильности такого подхода, но может поможет:
отправить Content-Length + ignore_user_abort + ob_flush() + flush()
 

xamelyon

Новичок
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);

?>
--------------------------------
 

xamelyon

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

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

у меня это выглядет так:
echo "Please wait ...";
 

Gas

может по одной?
PHP:
ob_start();
echo microtime();
header('Content-length: '.ob_get_length());
header('Connection: close');
ob_end_flush();
flush();

// какой угодно код
вот не знаю будет ли это работать если php не модулем стоит.
 

basboy

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

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

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

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

xamelyon

Новичок
_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(); не выполняется.
 

basboy

Новичок
почему ты не понимаешь
туплю наверное.

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

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

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

Т.е. выводи в браузел моного любого текста коментарием, а потом твоё мообщение.
Должно получиться
 

Gas

может по одной?
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 сек.

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