0

我有一个脚本可以计算生物节律并显示带有结果的图表。由于我不知道的原因,以下脚本在服务器更新后似乎不起作用。

<?php
    $now = gmdate('D, d M Y H:i:s') . ' GMT';
    header('Expires: ' . $now);
    header('Last-Modified: ' . $now);
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Pragma: no-cache");
    error_reporting(0);

    $copyright = "By www.magnaromagna.it";


    $name = $_POST["name"];
    $day = $_POST["day"];
    $month = $_POST["month"];
    $year = $_POST["year"];
    $cycle = $_POST["cycle"];
    $chartsize = $_POST["chartsize"];

    $name = strip_tags($name);
    if($chartsize == "small")
    {
      $chartwidth = 450;
      $chartheight = 252;
      $tablewidth = 500;
    }
    elseif($chartsize == "medium")
    {
      $chartwidth = 625;
      $chartheight = 350;
      $tablewidth = 655;
    }
    else
    {
      $chartwidth = 800;
      $chartheight = 448;
      $tablewidth = 820;
    }


    $date = date("m/d/y");
    function drawRhythm($daysalive, $period, $color)
    {
        //$period = $period * 2;
        global $cycle, $image, $chartwidth, $chartheight;


        $centerday = $daysalive - ($cycle / 2);
        $plotscale = ($chartheight - 25) / 2;
        $plotcenter = ($chartheight - 25) / 2;

        // draw the curve
        for($count = 0; $count <= $cycle; $count++  )
        {

    echo    $date ; 
            $phase = ((($centerday) + $count) % $period) / $period * 2 * pi();
            $y = 1 - sin($phase) * (float)$plotscale  + (float)$plotcenter;

            if($count > 0)
            {
                imageLine($image, $oldx, $oldy, $count * $chartwidth / $cycle, $y, $color);
            }
            $oldx = $count * $chartwidth / $cycle;
            $oldy = $y;
          }

    }

    $pastdays = abs(gregorianToJD($month, $day, $year) - gregorianToJD(date( "m"), date( "d"), date( "Y")));

    $image = imageCreate($chartwidth, $chartheight);

    $colorbackground   = imageColorAllocate($image, 0, 0, 0);
    $colorforeground   = imageColorAllocate($image, 255, 255, 255);
    $colorgrid         = imageColorAllocate($image, 255, 255, 255);
    $colorborder       = imageColorAllocate($image, 175, 175, 175);
    $colorcross        = imageColorAllocate($image, 255, 255, 255);
    $colorphysical     = imageColorAllocate($image, 0, 0, 255);
    $coloremotional    = imageColorAllocate($image, 255, 0, 0);
    $colorintellectual = imageColorAllocate($image, 0, 255, 0);
    $colorintuitive    = imageColorAllocate($image, 255, 0, 255);
    $colorawareness    = imageColorAllocate($image, 255, 125, 0);
    $colorspiritual    = imageColorAllocate($image, 0, 255, 255);
    $coloraesthetic    = imageColorAllocate($image, 255, 255, 0);

    imageFilledRectangle($image, 0, 0, $width - 1, $height - 1, $colorbackground);


    $nrsecondsperday = 60 * 60 * 24;
    // add a + before $nrsecondsperday; //
    $diagramdate = time() - ($cycle / 2 + $nrsecondsperday) * $nrsecondsperday;
    $flagcount = 1;
    for ($index = 1; $index < $cycle; $index  )
    {
        $thisdate = getDate($diagramdate);
        $countCoord = ($chartwidth / $cycle) * $index;


        imageLine($image, $countCoord, $chartheight - 25, $countCoord, $chartheight - 20, $colorgrid);

        $flag = $flagcount%2; 

        if($cycle == 60 && $flag == 0)
        {
          imageString($image, 3, $countCoord - 2, $chartheight - 16, $thisdate[ "mday"], $colorgrid);
        }
        elseif($cycle != 60)
        {
          imageString($image, 3, $countCoord - 5, $chartheight - 16, $thisdate[ "mday"], $colorgrid);
        }
        $flagcount  ;
        $diagramdate  = $nrsecondsperday;
    }


    imageRectangle($image, 0, 0, $chartwidth - 1, $chartheight - 20, $colorborder);

    imageLine($image, 0, ($chartheight - 20) / 2, $chartwidth, ($chartheight - 20) / 2, $colorcross);
    imageLine($image, $chartwidth / 2, 0, $chartwidth / 2, $chartheight - 20, $colorcross);

    drawRhythm($pastdays, 23, $colorphysical);
    drawRhythm($pastdays, 28, $coloremotional);
    drawRhythm($pastdays, 33, $colorintellectual);
    drawRhythm($pastdays, 38, $colorintuitive);
    drawRhythm($pastdays, 43, $coloraesthetic);
    drawRhythm($pastdays, 48, $colorawareness);
    drawRhythm($pastdays, 53, $colorspiritual);

    $subnum = rand(0, 999999);
    $subnum = "images/dummies/".$subnum.".gif";
    imageGIF($image,$subnum);
    imagedestroy($image);
    ?>

    <html>

    <head>
    <title>Risultato Bioritmo</title>
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
    <meta name="robots" content="index,follow" />
    <link rel="stylesheet" type="text/css" href="biostyle.css">
    </head>

    <body>
    <div align="center"><center>
    <table border="0" cellpadding="3" cellspacing="0"  width="90%">
    <TR><TD align = "right"><a href="http://www.magnaromagna.it/bioritmo/" target="_blank" class="pagelinks">Calcola altro bioritmo</a>
      </TD></TR></TABLE>
    </div>
    <div align="center"><center>
    <table border="1" cellpadding="7" cellspacing="0"  width="90%" class="outertable">
      <tr>
        <td align="center" class="genericstyle"><p class="bluesubheader">
        <?php
           if($name != "")
           {
             echo "Bioritmo per $name<br>";
           }
           else
           {
              echo "Mappa dei tuoi bioritmi<br>";
           }
         ?>

        <?php
           echo "Nascita: $month/$day/$year<br>Data di oggi: $date";
        ?>
        </p>
        <p align="center"><img src="<?php echo "$subnum"; ?>">
            Rosso: Ciclo Emozionale&nbsp;|&nbsp;
            Blu: Ciclo Fisico&nbsp;|&nbsp;
            Verde: Ciclo Intelligenza <br>
            Viola: Intuito&nbsp;|&nbsp;
            Acqua: Ciclo Spirituale&nbsp;|&nbsp;
            Giallo: Ciclo Estetico&nbsp;|&nbsp;
            Arancione:Ciclo Consapevolezza</p>
        <p align="left"><span class="bluesubheader"><br>
        Capire il tuo bioritmo</span></p>
       </td>
      </tr>
    </table>
    </center></div>
    <div align="center"><center>
    <table border="0" cellpadding="3" cellspacing="0"  width="90%">
    <TR><TD align = "right"><a href="http://www.magnaromagna.it/bioritmo/" class="pagelinks" target="_blank">Calcola altro bioritmo</a>
      </TD></TR></TABLE>
    </div>
    <div align="center"><center>

    <table border="0" cellpadding="7" cellspacing="0" width="300">
      <tr>
        <td align="center" class="copyright">Copyright Magnaromagna</td>
      </tr>
    </table>
    </center></div>
    </body>
    </html>
    <?php include("images/dummies/cleanup.php"); ?>

执行后会出现以下情况:

网关没有收到来自上游服务器或应用程序的及时响应

它要么是那个,要么是脚本导致一个空白页。

我认为服务器在执行这个脚本时不应该花那么多时间,但话又说回来,这可能只是我的编码错误。

  • 超时的一个例子是这里的执行:http: //tuttoblog.com/bioritmo/ (只需插入一个随机名称和年份并执行)

  • 一个空白页的例子是这里的执行:http: //magnaromagna.it/bioritmo/ (只需插入一个随机名称和年份然后执行)

由于我的时间很短,因此将非常感谢您对此事的任何帮助。

我的 phpinfo -> magnaromagna.it/phpinfo.php

4

1 回答 1

0

尝试放置:

set_time_limit(300);

在您的页面顶部,在您的其余 PHP 代码之前。看看你的脚本是否会正确执行 - 你应该致力于减少脚本执行所需的时间,即使这确实解决了它。

编辑:我有一种行不通的感觉,因为它可能不是 PHP 有超时问题。如果这没有帮助,那么这可能与您的服务器设置方式有关,您需要修复它,或者让其他人这样做。

于 2013-07-24T00:52:54.043 回答