簡體   English   中英

PHP性能問題require_once AJAX事件處理程序

[英]PHP performance issue require_once AJAX event handler

我有一個PHP文件可以處理來自表單的發布數據,但是當我通過require_once發布使用另一個PHP文件的表單時,似乎出現了某種性能/內存問題。 第一次處理該帖子並且性能良好,但是隨后的每個帖子都會變得越來越慢,直到瀏覽器窗口掛起,並且我看到IIS服務器上有一些繁忙的php cgi線程。

我正在使用PHP 5.6(php-5.6.11-Win32-VC11-x86)和jQuery 2.1.4。

當按下提交按鈕時,基本上沒有發布整個代碼,jQuery發出了XHR請求,並將表單傳遞給form_handler.php ,由該表單決定如​​何處理數據。

在該文件中處理的所有表單都可以正常工作,但是我有一個表單需要擴展處理,因此我試圖將其卸載到另一個PHP文件中。 管理該代碼的代碼如下所示:

if($options[0] == "processor"){
    //Data can not be handled and must use processor
    $sql = "select processor_file from dbo.processor where reference_id = '".$options[1]."'";
    $result = query_to_field($sql);
    $processor = '../processors/'.$result;
    if(file_exists($processor)) require_once $processor;
    else echo "Error Processor Not Found<br/>";
}

然后,指定的文件執行一些操作,並生成通過回顯返回的HTML。 我不確定是否是require_once的問題,我應該尋找使用curlexec來獲取其他文件的輸出。

收到的帖子是一個字段,處理器文件是此示例的修改后的副本

我已經對其進行了修改,以使用preg_match而不是ereg並構建$html而不是所有回顯和打印,以便在完成時僅回顯$html

可以提供的任何指導將不勝感激。

正如某些評論所懷疑的那樣,我的確在錯誤的地方尋找了問題,結果是添加表單事件處理程序的JS。 該網站上的其他表格只真正被調用過一次並提交過,這就是為什么我以前沒有發現這個問題。 基本上,由於事件處理程序只是在內容更改時才重新應用,因此導致提交將AJAX請求倍增,直到客戶端不再說了!

錯誤代碼:

function formhandlers(){        
    $('form').submit(function(e) {
        // get the form data
        var id = $(this).attr('id');
        // process the form
        var dsttarg = document.getElementById(id).getAttribute('target');
        var fd = new FormData(document.getElementById(id));
        postdata(fd,encodeURI('./include/post_handler.php?function='+id),dsttarg);
        e.preventDefault();
    });
}

好代碼:

function formhandlers(){    
    $('form').off('submit').on('submit', function(e) {
        // get the form data
        var id = $(this).attr('id');
        // process the form
        var dsttarg = document.getElementById(id).getAttribute('target');
        var fd = new FormData(document.getElementById(id));
        postdata(fd,encodeURI('./include/post_handler.php?function='+id),dsttarg);
        e.preventDefault();
    });
}

關鍵區別在於該處理程序如果已經存在則關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM