2013-07-24 46 views
0

我有一個腳本,可以計算生物節律並顯示結果圖。 對於我未知的原因,以下腳本在服務器更新後似乎無法工作。php腳本在服務器更新後給出超時或空白頁面

<?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"); ?> 

執行它後,會發生以下情況:

網關沒有接收到來自上游服務器或應用程序

它的及時響應,要麼或在腳本結果空白頁。

我不認爲服務器應該花這麼多時間來執行這個腳本,但這又可能只是我的代碼錯誤。

由於時間相當短暫,對此事的任何幫助都將非常感激。

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

+0

嘗試增加你的'max_execution_time' - 解決這個問題嗎? –

回答

0

嘗試把:

set_time_limit(300); 

在你的頁面的頂部,你的PHP代碼的其餘部分之前。看看你的腳本是否能夠正確執行 - 你應該儘量減少腳本執行的時間,即使這樣做確實解決了它。

編輯:我有一種感覺是行不通的,因爲它可能不是PHP在超時時遇到問題。如果這沒有幫助,那麼這可能與您的服務器設置有關,您需要修復該問題,或者讓其他人這樣做。