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 に答える