2012-02-15 3 views
3

Можно создать дубликат:
Simplest way to profile a PHP scriptmysql_fetch_object очень медленно занимает около 30 секунд, чтобы загрузить только с 20 РЯДОВ

Мы строим этот интернет-приложения с использованием MVC подход (но немного tweeked) , Структура приложения выглядит следующим образом.

class Page{ 
    private $title; 
    private $css; 
    private $type; 
    private $formData; 
    private $obj; 

    public function __construct($type){ 
     //this instance variable is designed to set form data which will appear on the pages 
     $this->formData = array(); 
     $this->setup($type); 

    } 

    public function setTitle($var){ 
     $this->title = 'Page : '; 
     $this->title .= $var; 
    } 

    public function getFormData() { 
     return $this->formData; 
    } 


    private function setFormData($tmpObjs) { 
     $finData = array(); 

     foreach($tmpObjs as $value){ 
      if($value == $this->obj && isset($_GET['new'])) 
       $newValue = 'true'; 
      else 
      $newValue = 'false'; 

      $tmpData = array(); 
      $tmpData = $value->getData($newValue); 
      $finData = array_merge($finData, $tmpData); 

     } 
     return $finData; 
    } 

    public function getTitle(){ 
     return $this->title; 
    } 

    public function displayCSS($_SESSION){ 
     $GlobalConfig = $_SESSION['Config']; 

     $CSS = array(); 
     $CSS = $GlobalConfig->getCSS(); 

     $SIZE = count($CSS); 

     foreach($CSS as $key => $value){ 
      echo "<link href=\"".$CSS[$key]."\" type=\"text/css\" rel=\"stylesheet\" />\n"; 
     } 
    } 

    public function displayJS($_SESSION){ 
     $GlobalConfig = $_SESSION['Config']; 

     $JS = array(); 
     $JS = $GlobalConfig->getJS(); 

     $SIZE = count($JS); 

     foreach($JS as $key => $value){ 
      echo "<script src=\"".$JS[$key]."\" type=\"text/javascript\"></script>\n"; 
     } 
    } 

    function setPageType($type) 
    { 
    $this->type = $type; 
    } 

    // This is used when you are filtering whatever type for search function 

    function getPageType(){ 
    $type = $this->type; 
    echo $type; 
    } 


    function setup($type){ 
     $this->type = $type; 
     switch($this->type){ 

      case "AccountExpiry": 

      break; 

      case "Home": 
       $CalendarExpiryItemList = new CalendarExpiryItemList(); 
       $CalendarExpiryItemList->createList(); 

       $_SESSION['Active_Form'] = 'homepage-record'; 
       $this->obj = $CalendarExpiryItemList; 

       $objs = array($CalendarExpiryItemList); 
       $this->formData = $this->setFormData($objs); 

       $this->setTitle('Home'); 

      break;   
     } 
    } 

    function generateJS(){ 
     if(file_exists('../classes/Javascript.class.php')) 
      include_once '../classes/Javascript.class.php'; 

     $JSType = str_replace(" " , "", ucwords(str_replace("-", " ", substr(end(explode("/", $_GET['page'])), 0, -4)))); 
     $JSType = $_GET['page']; 

     if(substr($JSType, -1) == 's') 
      $JSType = substr ($JSType, 0, -1); 

     echo $JSType; 
     $new_obj_name = $JSType . "JS"; 

     $jsObj = new $new_obj_name($this->type);   
    } 


    function getObject(){ 
     return $this->obj; 
    } 

    //There is more code, file has been omitted for forum 
} 

Ниже класс CalendarExpiryItemList

class CalendarExpiryItemList 
{ 
    private $List = array(); 

    public function __construct() 
    { 
     //Nothing To Do Yet 
    } 

    public function createList($Type = "Followups") 
    { 
     switch($Type) 
     { 
      case "ALL": 
      $this->List = array(); 
      $this->getAllItemsInArray(); 
      return $this->List; 
      break; 

      case "Invoice": 
      $this->List = array(); 
      $this->getInvoiceCalendarItems(); 
      return $this->List; 
      break; 

      case "Followups": 
      $this->List = array(); 
      $this->getFollowUpExpiryItems(); 
      return $this->List; 
      break; 
     } 
    } 

    public function _compare($m, $n) 
    { 
     if (strtotime($m->getExpiryDate()) == strtotime($n->getExpiryDate())) 
     { 
      return 0; 
     } 

     $value = (strtotime($m->getExpiryDate()) < strtotime($n->getExpiryDate())) ? -1 : 1; 

     echo "This is the comparison value" . $value. "<br/>"; 

     return $value; 
    } 

    public function display() 
    { 
     foreach($this->List as $CalendarItem) 
     { 
      echo "<tr>"; 
       if($CalendarItem->getType() != "ContractorInsurance") 
        echo "<td>".DateFormat::toAus($CalendarItem->getExpiryDate())."</td>"; 
       else 
        echo "<td>".$CalendarItem->getExpiryDate()."</td>"; 
       echo "<td>".$CalendarItem->getType()."</td>"; 
       echo "<td>".$CalendarItem->getDescription()."</td>"; 
       echo "<td>".$CalendarItem->doAction()."</td>"; 
      echo "</tr>"; 
     } 
    } 

    public function getData() 
    { 
     $data = array(); 
     $data['Rows'] = ""; 
     $TempArray1 = array(); 

     foreach($this->List as $CalendarItem) 
     { 
      $Temp = ""; 
      $Temp .= "<tr>"; 
       if($CalendarItem->getType() != "ContractorInsurance") 
        $Temp .= "<td>".DateFormat::toAus($CalendarItem->getExpiryDate())."</td>"; 
       else 
        $Temp .= "<td>".$CalendarItem->getExpiryDate()."</td>"; 
       $Temp .= "<td>".$CalendarItem->getType()."</td>"; 
       $Temp .= "<td>".$CalendarItem->getDescription()."</td>"; 
       $Temp .= "<td>".$CalendarItem->doAction()."</td>"; 
      $Temp .= "</tr>"; 
      $TempArray1[] = $Temp; 
     } 

     if(count($TempArray1) == 0) 
     { 
      $Row = "<tr><td colspan='4'>No Items overdue</td></tr>"; 
      $TempArray1[] = $Row; 
     } 

     $data['Rows'] = $TempArray1; 
     return $data; 

    } 

    //---------------Private Functions---------------- 
    private function SortArrayDate() 
    { 
     $TempArray = array(); 
     $TempArray = $this->List; 

     $this->List = array(); 

     foreach($TempArray as $CalendarItem) 
     { 
      $this->List[$CalendarItem->getExpiryDate()] = $CalendarItem; 
     } 

     ksort($this->List); 

    } 

    private function getAllItemsInArray() 
    { 
     $this->getInvoiceCalendarItems(); 
     $this->getFollowUpExpiryItems(); 
     $this->getProjectExpiryItems(); 
     $this->getVehicleExpiryItems(); 
     $this->getUserInsuranceExpiryItems(); 
     $this->getContractorExpiryItems(); 

     //$this->SortArrayDate(); 
    } 

    private function getContractorExpiryItems() 
    { 
     $SQL = "SELECT * FROM `contractor_Details` WHERE `owner_id` =".$_SESSION['user_id']; 

     $RESULT = mysql_query($SQL); 

     while($row = mysql_fetch_object($RESULT)) 
     { 
      $InsLic = new ContractorInsLis(); 
      $InsLic->getContractorInsLisById($row->contractor_id); 

      if($InsLic->CheckExpiry($InsLic->getwcic_expiry_date()) == 'Expired') 
      { 
       $ContractorExpiryItem = new ContractorInsuranceExpiryItem($row->contractor_id,$InsLic->getwcic_expiry_date(),"Contractor ".$row->first_name." ".$row->last_name."'s Workers Comp License expired on ".$InsLic->getwcic_expiry_date()); 
       $this->List[] = $ContractorExpiryItem; 
      } 

      if($InsLic->CheckExpiry($InsLic->getpli_expiry_date()) == 'Expired') 
      { 
       $ContractorExpiryItem = new ContractorInsuranceExpiryItem($row->contractor_id,$InsLic->getpli_expiry_date(),"Contractor ".$row->first_name." ".$row->last_name."'s Public Liability Insurance expired on ".$InsLic->getpli_expiry_date()); 
       $this->List[] = $ContractorExpiryItem; 
      } 

      if($InsLic->CheckExpiry($InsLic->getcontractor_expiry_date()) == 'Expired') 
      { 
       $ContractorExpiryItem = new ContractorInsuranceExpiryItem($row->contractor_id,$InsLic->getcontractor_expiry_date(),"Contractor ".$row->first_name." ".$row->last_name."'s Contractor License expired on ".$InsLic->getcontractor_expiry_date()); 
       $this->List[] = $ContractorExpiryItem; 
      } 

      if($InsLic->CheckExpiry($InsLic->getwcic_expiry_date()) == 'Expired') 
      { 
       $ContractorExpiryItem = new ContractorInsuranceExpiryItem($row->contractor_id,$InsLic->getcompany_expiry_date(),"Contractor ".$row->first_name." ".$row->last_name."'s Company License expired on ".$InsLic->getcompany_expiry_date()); 
       $this->List[] = $ContractorExpiryItem; 
      } 
     } 
    } 

    private function getUserInsuranceExpiryItems() 
    { 
     $SQL = "SELECT * FROM `user_my_insurances_licences` WHERE `user_id`=".$_SESSION['user_id']; 
     $RESULT = mysql_query($SQL); 

     while($row = mysql_fetch_object($RESULT)) 
     { 
      $UserInsuranceLicenses = new UserMyLicenseInsurance(); 
      if($UserInsuranceLicenses->CheckExpiry($row->DL_expiry_date) == 'Expired') 
      { 
       $ExpiredItem = new UserInsuranceExpiryItem($_SESSION['user_id'],$row->DL_expiry_date,"DL #".$row->DL_number." has expired on ".$row->DL_expiry_date); 
       $this->List[] = $ExpiredItem; 
      } 

      if($UserInsuranceLicenses->CheckExpiry($row->CL_expiry_date) == 'Expired') 
      { 
       $ExpiredItem = new UserInsuranceExpiryItem($_SESSION['user_id'],$row->CL_expiry_date,"CL #".$row->CL_number." has expired on ".$row->CL_expiry_date); 
       $this->List[] = $ExpiredItem; 
      } 

      if($UserInsuranceLicenses->CheckExpiry($row->BL_expiry_date) == 'Expired') 
      { 
       $ExpiredItem = new UserInsuranceExpiryItem($_SESSION['user_id'],$row->BL_expiry_date,"BL #".$row->BL_number." has expired on ".$row->DL_expiry_date); 
       $this->List[] = $ExpiredItem; 
      } 

      if($UserInsuranceLicenses->CheckExpiry($row->wcic_expiry_date) == 'Expired') 
      { 
       $ExpiredItem = new UserInsuranceExpiryItem($_SESSION['user_id'],$row->wcic_expiry_date,"Workers Compe #".$row->wcic_policy_number." has expired on ".$row->wcic_expiry_date); 
       $this->List[] = $ExpiredItem; 
      } 

      if($UserInsuranceLicenses->CheckExpiry($row->pli_expiry_date) == 'Expired') 
      { 
       $ExpiredItem = new UserInsuranceExpiryItem($_SESSION['user_id'],$row->pli_expiry_date,"Public Liability #".$row->pli_policy_number." has expired on ".$row->pli_expiry_date); 
       $this->List[] = $ExpiredItem; 
      } 

      if($UserInsuranceLicenses->CheckExpiry($row->cwi_expiry_date) == 'Expired') 
      { 
       $ExpiredItem = new UserInsuranceExpiryItem($_SESSION['user_id'],$row->cwi_expiry_date,"Contract Worker Insurance #".$row->cwi_policy_number." has expired on ".$row->cwi_expiry_date); 
       $this->List[] = $ExpiredItem; 
      } 

      if($UserInsuranceLicenses->CheckExpiry($row->hoi_expiry_date) == 'Expired') 
      { 
       $ExpiredItem = new UserInsuranceExpiryItem($_SESSION['user_id'],$row->hoi_expiry_date,"Home Owners Insurance #".$row->hoi_policy_number." has expired on ".$row->hoi_expiry_date); 
       $this->List[] = $ExpiredItem; 
      } 

      if($UserInsuranceLicenses->CheckExpiry($row->pii_expiry_date) == 'Expired') 
      { 
       $ExpiredItem = new UserInsuranceExpiryItem($_SESSION['user_id'],$row->pii_expiry_date,"Professional Indemnity Owners Insurance #".$row->pii_policy_number." has expired on ".$row->pii_expiry_date); 
       $this->List[] = $ExpiredItem; 
      } 

      if($UserInsuranceLicenses->CheckExpiry($row->tic_expiry_date) == 'Expired') 
      { 
       $ExpiredItem = new UserInsuranceExpiryItem($_SESSION['user_id'],$row->tic_expiry_date,"Tools Insurance #".$row->tic_policy_number." has expired on ".$row->tic_expiry_date); 
       $this->List[] = $ExpiredItem; 
      } 
     } 
    } 

    private function getVehicleExpiryItems() 
    { 
     $SQL = "SELECT * FROM `user_my_motor_vehicles` WHERE `user_id` =".$_SESSION['user_id']; 
     $RESULT = mysql_query($SQL); 

     while($row = mysql_fetch_object($RESULT)) 
     { 
      $UserMotorVehicles = new UserMotorVehicles(); 
      if($UserMotorVehicles->CheckExpiry($row->vehicle_registration_expiry_date) == 'Expired') 
      { 
       $VehicleRegistration = new VehicleExpiryItem($row->id,$row->vehicle_registration_expiry_date,"Vehicle ".$row->vehicle_reg_no." Registration Expired on ".$row->vehicle_registration_expiry_date); 
       $this->List[] = $VehicleRegistration; 
      } 

      if($UserMotorVehicles->CheckExpiry($row->insurance_expiry_date) == 'Expired') 
      { 

       $VehicleInsurance = new VehicleExpiryItem($row->id,$row->insurance_expiry_date,"Vehicle ".$row->vehicle_reg_no." Insurace Expired on ".$row->insurance_expiry_date); 
       $this->List[] = $VehicleInsurance; 
      } 
     } 
    } 

    private function getProjectExpiryItems() 
    { 
     $SQL = "SELECT * FROM my_project WHERE user_id =".$_SESSION['user_id']." AND ((end_date < '".date('Y-m-d')."') OR (end_date = '".date('Y-m-d')."') OR end_date='0000-00-00') AND (actual_end_date = '' OR actual_end_date = ' ' OR actual_end_date = '0000-00-00')"; 

     $RESULT = mysql_query($SQL); 

     while($row = mysql_fetch_object($RESULT)) 
     { 
      $Project = new ProjectExpiryItem($row->project_id,$row->end_date,"Project ".$row->project_name." was due on ".$row->end_date,$row->start_date); 
      $this->List[] = $Project; 

     } 
    } 

    private function getInvoiceCalendarItems() 
    { 
     $SQL = "SELECT * FROM project_invoices WHERE (dueDate < '".date('Y-m-d')."') AND (date_paid ='0000-00-00' OR date_paid='') AND (user_id = ".$_SESSION['user_id'].") LIMIT 0, 10"; 
     $RESULT = mysql_query($SQL); 

     while($row = mysql_fetch_object($RESULT)) 
     { 
      $Invoice = new InvoiceExpiryItem($row->id,$row->invoice_date,"Invoice #".$row->id." is overdue."); 
      //testObj(array($Invoice)); 
      $this->List[] = $Invoice; 
     } 
    } 

    private function getFollowUpExpiryItems() 
    { 
     $SQL = "SELECT * from followUps WHERE owner_id=".$_SESSION['user_id']." AND ((Date_Due < '".date('Y-m-d')."') OR (Date_Due = '".date('Y-m-d')."') OR (Date_Due = '0000-00-00')) AND Completed != '1'"; 
     $RESULT = mysql_query($SQL); 

     while($row = mysql_fetch_object($RESULT)) 
     { 
      $Form_Id = new FormId(); 
      $Description = "Follow Up on ".$Form_Id->getFormNam($row->Form_id)." was due on ".$row->Date_Due; 
      $FollowUp = new FollowUpExpiryItem($row->Id,$row->Date_Due,$Description); 
      $this->List[] = $FollowUp; 
     } 
    } 

Это пагинацию Class

<?php 

class Pagination { 
    protected $Items = array(); 
    protected $Type = "default"; 
    protected $Title = "List of "; 
    protected $Base_Url = ""; 
    protected $Table; 

    //-------------------------Table Settings----------------// 
    protected $No_Of_Columns = NULL; 
    protected $No_Of_Items_Per_Page = 10; //By Default 10 items will be displayed on a page.protected 
    protected $Present_Page = 0; 
    protected $Columns = array(); 
    protected $Rows = array(); 

    //------------------------Table Class Attributes---------// 
    protected $Table_Class = ""; 
    protected $Table_Id = ""; 
    protected $GETVarName = "PP"; 

    /** 
    * 
    */ 
    public function __construct() 
    { 
     $this->Table = false; 
    } 

    public function paginate() 
    { 
     //Check if the base url is set 
     if(strlen($this->Base_Url) == 0){ 
      echo "Error: Could not paginate, No base url Found!"; 
     } 

     //Set the Current page value to Present Page 
     if(isset($_GET)) 
     { 
      if(isset($_GET[$this->GETVarName])){ 
       $this->Present_Page = intval($_GET[$this->GETVarName]); 
      } else { 
       $this->Present_Page = 1; 
      } 
     } 

     //Draw the table and the values 
     $this->generatePaginationTable(); 
    } 

    public function setData($data) 
    { 
     if(is_array($data)){ 
      $this->Rows = $data; 
      return true; 
     } else { 
      return false; 
     } 
    } 

    public function putData($object,$functionName = "generateRow") 
    { 
     $TempData = array(); 
     if(method_exists($object,"getObjs")) 
     { 
      $ObjectArray = $object->getObjs(); 
     } 

     if(method_exists($object,$functionName)) 
     { 
      foreach($ObjectArray as $Obj) 
      { 
       $TempData[] = $object->$functionName($Obj); 
      } 
     } 

     $this->setData($TempData); 
     unset($TempData); 
    } 

    public function setIsTable($val) 
    { 
     $this->IsTable = $val; 
    } 

    public function addColumnNames($Col){ 
     if(is_array($Col)){ 
      $this->No_Of_Columns = $Col; 
     } else { 
      return false; 
     } 
    } 

    /** 
    * @param $config (array) 
    * @return bool 
    * 
    * this function initializes the Pagination object with the 
    * initial values 
    */ 
    public function initialize($config) 
    { 
     if(is_array($config)) 
     { 
      foreach($config as $key => $value) 
      { 
       if(isset($this->$key)) 
       { 
        $this->$key = $value; 
       } 
      } 
     } else if(is_object($config)) { 
      return false; 
     } else if(is_string($config)){ 
      return false; 
     } 
    } 


    //------------------------------Private Function For the Class-------------------------// 
    private function generatePaginationTable() 
    { 
     if($this->Table){ 
      $this->StartTable(); 
      $this->DisplayHeader(); 
     } 

     $this->DisplayData(); 
     $this->DisplayLinks(); 

     if($this->Table) 
      echo "</table>"; 
    } 

    private function DisplayLinks() 
    { 
     if($this->Table){ 
     echo "<tr>"; 
     echo '<td colspan="'. count($this->Rows) .'">'; 
      $this->GenerateLinkCounting(); 
     echo '</td>'; 
     echo "</tr>"; 
     } else { 
      if(count($this->Rows) > 0) 
      { 
       $ROW = $this->Rows[0]; 
       $ColSpan = substr_count($ROW,"<td"); 

       echo "<tr>"; 
       echo '<td colspan="'. $ColSpan .'" align="right">'; 
       $this->GenerateLinkCounting(); 
       echo '</td>'; 
       echo "</tr>"; 
      } 
     } 
    } 

    private function GenerateLinkCounting() 
    { 
     $this->Base_Url .= $this->getOtherGetVar(); 
     $StartCount = 1; 
     $EndCount = count($this->Rows)/$this->No_Of_Items_Per_Page; 

     for($i=0; $i < $EndCount; $i++) 
     { 
      if($i == 0) 
      { 
       echo ' <a href="'. $this->Base_Url.'&'.$this->GETVarName .'='.intval($i+1). '" >First</a> '; 
      } else if($i == intval($EndCount)){ 
       echo ' <a href="'. $this->Base_Url.'&'.$this->GETVarName .'='.intval($i+1).'" >Last</a> '; 
      } else { 
       echo ' <a href="'. $this->Base_Url.'&'.$this->GETVarName .'='.intval($i+1). '" >'.intval($i+1).'</a> '; 
      } 

     } 
    } 

    private function getOtherGetVar() 
    { 
     $Link = ""; 
     if(isset($_GET)) 
     { 
      foreach($_GET as $key => $val) 
      { 
       if($key != $this->GETVarName) 
       { 
        $Link .= "&".$key."=".$val; 
       } 
      } 
     } 

     $h = preg_split("/&/",$this->Base_Url); 

     $this->Base_Url = $h[0]; 
     return $Link; 
    } 

    private function DisplayData() 
    { 
     $Index = 0; 
     $StartIndex = intval(intval($this->Present_Page-1) * $this->No_Of_Items_Per_Page); 


     $EndIndex = intval($StartIndex + $this->No_Of_Items_Per_Page); 
     foreach($this->Rows as $Row) 
     { 
      $Index++; 
      if($Index >= $StartIndex && $Index <= $EndIndex) 
      { 
       echo "<tr>"; 
        if(is_array($Row)) 
        { 
         foreach($Row as $key => $value){ 
          echo "<td>".$value."</td>"; 
         } 
        } else { 
         echo $Row; 
        } 

       echo "</tr>"; 
      } 
     } 
    } 

    private function DisplayHeader() 
    { 
     if(is_array($this->Columns)) 
     { 
      echo "<thead>"; 
       echo "<tr>"; 

       foreach($this->Columns as $Col => $value) 
       { 
        echo "<td>".$value."</td>"; 
       } 

       echo "</tr>"; 
      echo "</thead>"; 
     } 
    } 

    private function StartTable() 
    { 
     echo "<table "; 
     if(strlen($this->Table_Class) > 0) 
       echo 'class="'.$this->Table_Class.'" '; 

     if(strlen($this->Table_Id) > 0) 
       echo 'id="'.$this->Table_Id.'" '; 

     echo ">"; 
    } 


} 

Final Реализация File

<?php 
$Page = new Page('Home'); 

$data = $Page->getFormData(); 

$Pagination = new Pagination(); 

$config = array(); 
$config['Table'] = false; 
$config['No_Of_Items_Per_Page'] = 25; 
$config['Base_Url'] = base_url() . 'BootLoader.php?page=Homepage'; 
$config['GETVarName'] = "ODL"; 

$Pagination->initialize($config); 
$Pagination->setData($data['Rows']); 



/** 
* Want to have multiple lists 
*/ 

$CalendarExpiryList = $Page->getObject(); 

$CalendarExpiryList->createList("Invoice"); 

$InvoiceList = new Pagination(); 

$config = array(); 
$config['Table'] = false; 
$config['No_Of_Items_Per_Page'] = 25; 
$config['Base_Url'] = base_url() . 'BootLoader.php?page=Homepage'; 
$config['GETVarName'] = "OIDL"; 

$InvoiceList->initialize($config); 

$data2 = $CalendarExpiryList->getData(); 
$InvoiceList->setData($data2['Rows']); 

//This is the display 
include_once("Forms/homepage/home-page.html.php"); 

?> 

РНР скрипт работает плавник е. Для загрузки требуется около 0,03. Но когда скрипт достигает класса CalendarExpiryItemList. Это занимает около 30 секунд, и мой сервер отключается.

В каждой таблице должно быть от 12 до 15 полей в среднем и от 10 до 100 записей.

Я нахожусь на хостинге с хостинговой компанией, у них есть балансиры нагрузки. Поэтому, если мои сценарии занимают более 30 секунд, балансировщик нагрузки сбрасывает мое соединение и возвращает сообщение об ошибке «Сервер не отправил никаких данных»

+3

Это много кода. Вероятно, вам лучше всего найти точное узкое место в профилировании: [Простейший способ профилирования PHP-скрипта] (http://stackoverflow.com/questions/21133/simplest-way-to-profile-a-php-script) –

+0

В качестве альтернативы: [Что является лучшим способом для профилирования PHP-кода] (http://stackoverflow.com/q/133686) –

+1

Проводка сотен строк кода, а затем задание таких вопросов, как, почему он не работает, никогда не заставит вас ответы на вопросы: – iWantSimpleLife

ответ

1

Как говорят другие, попробуйте просмотреть свой код.

... не имея возможности отлаживать код, возможно, один или несколько методов в классе CalendarExpiryItemList тоже не работают; по запросу или связанному запросу или возвращению бесконечного цикла. Вы должны тестировать и отлаживать каждый метод индивидуально на своем тестовом сервере, чтобы узнать, какие результаты вы получаете. Для быстрого и грязного теста просто зарегистрируйте вывод каждого метода в файл. Также проверьте $ _SESSION ['user_id'] значение и используйте ". (Int) $ _SESSION ['user_id'], а затем перед отправкой его db в случае, если он пуст, потому что он не экранирован.

+0

Привет, спасибо. Все, что работает, отлично. – user1210155

+0

Я, наконец, нашел проблему. Спасибо Pekka за Профилирование. Ошибка в динамической функции, у которой есть утечка памяти, спасибо человеку. – user1210155

+0

Прохладный, у меня не было времени настроить его и профилировать, я сделаю свой собственный 100 000 + лайнер, поэтому я немного подтолкнул к времени ... – gus

 Смежные вопросы

  • Нет связанных вопросов^_^