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();
    });
}

关键区别在于,如果该处理程序已存在,则将其关闭。