调用ajax请求会导致php阻止访问

调用ajax请求会导致php阻止访问,php,ajax,session,shell-exec,Php,Ajax,Session,Shell Exec,我有一个很难调试的问题。我有一个网页,它可以向我们的服务器apache/php发出几个ajax请求,非常简单。我们已经实现了一个PHP函数,它使用SHILLYEXEC来执行一个小型C++程序并读取输出。在本地测试时,我没有遇到任何问题。然而,在我们的实际服务器上,存在一个大问题 每次调用调用调用shell_exec的php函数的ajax请求时,我都会得到一个很好的响应,但之后我再也无法成功地对该php文件进行ajax调用。我已经在不同的浏览器和计算机上测试过,每次都会出现这种情况 如果我删除co

我有一个很难调试的问题。我有一个网页,它可以向我们的服务器apache/php发出几个ajax请求,非常简单。我们已经实现了一个PHP函数,它使用SHILLYEXEC来执行一个小型C++程序并读取输出。在本地测试时,我没有遇到任何问题。然而,在我们的实际服务器上,存在一个大问题

每次调用调用调用shell_exec的php函数的ajax请求时,我都会得到一个很好的响应,但之后我再也无法成功地对该php文件进行ajax调用。我已经在不同的浏览器和计算机上测试过,每次都会出现这种情况

如果我删除cookie,我可以重新连接到php文件

我已经用chrome开发者工具检查了网络连接,没有给出任何说明。我从调用shell_exec的ajax请求收到了良好的响应。但后来,它被封锁了。我收到连接失败错误-但仅在调用该函数的设备/会话上。如果我打开其他浏览器,它仍将连接

我用谷歌搜索了php会话阻塞,但我不明白这是怎么回事。这是一个简单的ajax请求,一次只发出一个请求。此外,我多次调用其他ajax请求来重现该行为,但我不能。只有在调用调用shell_exec的php函数时才会发生这种情况

如果shell_exec出了问题,我不希望得到良好的回应,但我得到了良好的回应

我知道这是模糊的,但这是一个大问题,我不知道如何调试这样的问题。关于正在发生的事情或者我如何调试它有什么想法吗

示例代码:

function applyForCreditCards() {
  if (!creditCardAppForm.isValid()) return;
    $.ajax({
      type: 'POST',
      url: '../troystest/MobileServices/MobileValidationService.php',
      data: { 
          'action': 'applyForCreditCard',
          'ssn' : ssn, 
          ... more variables...
          'creditCardIds' : selectedCreditCards
      },
      success: function(msg){
        results = JSON.parse(msg);
        // Do something with response
        });
      }
  });
}
服务器端代码示例

if (!$_SESSION)
    session_start();
switch($_POST['action'] {
    case 'applyForCreditCard': $this->applyForCreditCards($vars...);
              break;
}

applyForCreditCards($vars...) {
    $output = explode("\n", shell_exec($pathToExec." ".$commandLineArgs));
    echo json_encode($output);
    exit();
}

真正的代码真的很长,我试图包括相关部分。C++程序很小,并将10行输出到STDU.

取决于在SeLySeExcel中运行的实际命令,在尝试再次运行之前,您可能需要先杀死进程,或者在后台运行每个进程。


在这里查看一些有助于实现此目的的类:

您能发布一些代码吗?您最感兴趣的代码是什么?一些用于调用AJAX的javascript和用于给出响应的PHP脚本!我想可能是shell_exec程序失败了…进入了无限循环或其他什么。但是php服务器难道一点也不响应吗?谢谢你的回复。我会更彻底地研究这个链接。