PHP-python IPC突然停止

时间:2014-03-30 11:49:51

标签: javascript php python network-programming unix-socket

我实现了一个简单的python服务器,它创建一个Unix域套接字并监听它上面的数据。起初我用一个文本字段对此进行了测试,该文本字段在按下"发送"时运行PHP脚本。在我开始工作之后,我添加了一些jquery并尝试发送当前按下的键的键代码。整个系统将在Raspberry Pi上运行。

在Ubuntu上构建它时,某些东西会停止工作:

  • 如果超过约5秒没有发送任何内容(包括文本字段,并且添加了JavaScript)
  • 看似任意数量的已发送数据包(大部分时间在101左右,但有时在30-some,有时为50-ish;我无法辨别出这背后的任何明显模式)

将所有内容转移到Raspberry Pi上:

  • 只有每秒(每三分之一,在添加计数器之后)数据包实际上都会被python服务器接收
  • 收到大约400个数据包后,它会在您发送时收到每个数据包
  • 但是在发送了多个数据包之后,或者在没有输入的情况下等待一段时间之后它不再停止工作;它似乎偶尔会挂起一点

PHP或python在任何时候都没有任何迹象表明套接字有问题 - 我最初用

调试了PHP位
ini_set('display_errors', 'On');
error_reporting(E_ALL);

Python服务器代码:

import socket, os

s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
    os.remove("/tmp/socketname")
except OSError:
    print 'OSError'
s.bind("/tmp/socketname")
s.listen(1)
n=0
conn = s.accept()[0]
while 1:
    if not conn:
        break
    data = conn.recv(1024)
    if not data:
        break
        print '---'
    if data:
        n=n+1
        print n,
        print data
print 'done'
conn.close()

PHP脚本:

<?php
$sock = pfsockopen  ('unix:///tmp/socketname', 0);

$cmd=$_POST["pressed"];

if(isset($cmd))
{
    if(!$sock) echo("no socket");
    if(!fwrite($sock, $cmd)) echo("Error while writing1!!!<br>\n");
}
?>

HTML文件的相关部分:

<script>     
    $(window).keydown(function(event){
       var req=$.ajax({
          url: "testajaxpost.php",
          type: "POST",
          data: { 'pressed': event.keyCode },
          error: function (jqXHR, textStatus, errorThrown)
             {
               alert( "Request failed: " + errorThrown );
             }
                    })
                                   });
</script>

表现得非常奇怪,我无法看出可能出现的问题。我几乎没有网络编程的经验,所以可能会有一些我错过的巨大而明显的错误。

0 个答案:

没有答案