1

我有一个 PHP 脚本,其中有一个无限循环。浏览器不打印循环中的第一个 echo 语句,它甚至不提供指向超链接的正确链接。可能出了什么问题?

演示

代码:

<html>
<head>
<style>
img{
    height:200px;
    width:200px;
}
</style>
</head>
<body>
 <?php
error_reporting (0);
set_time_limit(0);// Setting an infinite timeout limit.
        for($i=1;  ;$i++)
            {
            $to_send = "http://graph.facebook.com/";
            $to_send_new = $to_send.$i;
            $content = file_get_contents($to_send_new);
            $parsed = json_decode($content);
            $link = $parsed->link;
            $link = str_replace("http://www.facebook.com","https://graph.facebook.com",$link);
            $link .="/picture?width=200&height=200";
            if(!$parsed->first_name)
            goto a;
?>

<br>
            First Name: <?php echo $parsed->first_name;?>
            <br>
            Last Name:<?php echo $parsed->last_name;?>
            <br>
            Full Name :<?php echo $parsed->name;?>
            <br>
            Facebook Username:<?php echo $parsed->username;?>
            <br>
            Gender:<?php echo $parsed->gender;?>
            <br>

            <a href="<?php echo $link; ?>" target="_blank">Profile Picture</a> 
            <!--
             <img src="<?php/* echo $link; */?>" >
             -->
             <br>
             <hr>

 <?php

        sleep(5);
a:
 }

 ?>
</body>
</html>
4

1 回答 1

0

小心无限循环。根据您的 Web 服务器(例如 apache)和 php 设置,对您的服务器的任何请求都会在服务器上添加一个线程,该线程会占用他们的资源集。随着时间的推移,这可能会也可能不会挂起您的服务器。

有时我自己使用持久的循环。在这种情况下,我发现 apachestatus 很有用,可以检查哪些线程仍在运行: http ://httpd.apache.org/docs/2.2/mod/mod_status.html

它还提供有助于杀死旧线程的 PID。

于 2013-10-07T10:56:00.493 回答