繁体   English   中英

PHP与HTML混合没有输出

[英]PHP mixed with html no output

自从我接触过任何与网络相关的代码以来已有十多年了,请原谅我的无知。 我为教职员工/博士后聚会页面混合了一些php代码和html,令人惊讶的是表面上没有错误。 当从我的Linux控制台执行php时,它会按我期望的那样输出,回显字符串。 一旦从apache网络服务器执行了php,它的输出世界就会变得无效(完全空白或服务器500代码)。

<?php
header('Content-Type: text/html; charset=utf-8');

$str = file_get_contents('str.txt');

echo '<html>
<head>
<style>body { background: #130; }</style>
</head>
<body>
<code><span style="display:block;line-height:8px; font-size: 8px; font-weight:bold;white-space:pre;font-family: monospace;color: #0F0; background: #130;">';

$r = preg_match_all("/.?/uim", $str, $m);

for($i=0; $i < sizeof($m[0]); $i++) {
    echo $m[0][$i]; 
    time_nanosleep(0, 50000000);
}

echo '</span></code>
</body>
</html>';

?>

编辑:mildred上传了错误的文件,更新-> str.txt可以在这里找到: https ://gist.github.com/anonymous/dbb8ae305d83078d7ae7

似乎与您的php代码无关,对我来说,在测试运行中对Apache执行得很好。 这可能是您在php或apache-> php-fpm上执行的超时,或者是为运行php进程分配的内存量。当您检查输出时,apache错误日志会给您什么。 然后,我们可以为您提供更好的答案。

根据下面的注释,您将需要使用ob_flush()清除输出缓冲区,以便在内容可用时显示内容,而不是在输出末尾显示内容。 对于您正在尝试做的ajax应用程序可能更有意义,除非您真的想依赖刷新输出。

还要记住使用ob_flush,即使您必须更新apache / php设置以立即实际发送数据而不是对其进行缓冲。 您的html结束语也始终在底部。 正如我之前提到的,一个更好的解决方案是在前端使用javascript,并使用基本模板调用一个单独的php进行处理。 响应时,js将使用其他信息更新页面。

匹配每个单个字符,您可以使用/(.)/

像这样

preg_match_all("/(.)/", $str, $m);

或者你可以使用str_split docs

str_split($str);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM