Как выполнить html-код перед выполнением php?

Есть файл php. Вид его примерно следующий (Угловые скобки заменил на квадратные, т.к. Хабру они не нравятся.)

[html]<br/>
<br/>
[script type=&quot;text/javascript&quot;]<br/>
тут тело скрипта<br/>
[/script&gt;]<br/>
[/html]<br/>
<br/>
&lt;?php<br/>
sleep(5000);<br/>
php-код<br/>
?&gt;



При выполнении этого файла в браузере код php выполняется через 5 сек, html-код вообще не отрабатывает (просмотр исходного кода страницы через браузер показывает пустоту). Если убрать весь php-код, html-код прекрасно срабатывает, и его можно узреть через просмотр html-страницы.


Была попытка решить проблему таким способом:

&lt;?php<br/>
echo='[html]<br/>
[script type=&quot;text/javascript&quot;]<br/>
тут тело скрипта<br/>
[/script]<br/>
[/html]';<br/>
sleep(5000);<br/>
php-код<br/>
?&gt;



Но это вообще ничего не изменило.


В чём проблема? Куда копать?
  • Вопрос задан
  • 4237 просмотров
Решения вопроса 1
@0xA0
Итоговое решение может выглядить примерно так:
[script>
$(document).ready(function()
{
$("#redirect").load('index.php');
});
[/script>
[html>
[div id= 'redirect',name='redirect'>
[/div>
[/html>

Ответ написан
Пригласить эксперта
Ответы на вопрос 6
demark
@demark
Никакой тут проблемы нету. Есть непонимание как работают разные сущности — серверная и клиентская.

php выполняется не в браузере, а на сервере и отдаёт через веб-сервер сорсы для браузера, а далее, в браузере вступает в игру javascript (если включён).

в вашем случае, единственная возможность исполнить сначала js — это загрузить страничку, а потом аяксом сделать запрос на сервер к скрипту php.
Ответ написан
negasus
@negasus
Developer
Из сформированной страницы html с помощью ajax после необходимой паузы (setTimeout) дёрните нужный php-скрипт и выполняйте что-надо.

Sleep и т.д. — костыли, которые лучше не использовать.
Ответ написан
Комментировать
MastaEx
@MastaEx
Основная ваша проблема в том, что sleep(5000) это не 5 сек., а 5000 сек. Подождите 5000 сек. и будет вам html :-)
Ответ написан
Комментировать
@zapimir
Почитать что такое буфер вывода и функции управления им (flush, ob_flush, и т.п.)
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
Запускайте длительные процессы в отдельный поток лучше.
Вид вкладки, висящей в статусе «загрузка» в течении полутора часов (5000 секунд-то) как-то совершенно не симпатичен.
Ответ написан
Комментировать
Попробуйте создать (или вписать в существующий) файл .htaccess
Со строкой:
RemoveHandler .html .htm
AddType application/x-
httpd-
php .php .htm .html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы