[英]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
的問題,我應該尋找使用curl
或exec
來獲取其他文件的輸出。
收到的帖子是一個字段,處理器文件是此示例的修改后的副本 。
我已經對其進行了修改,以使用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.