Привет, я новенький, у меня проблема с моим кодом.Я хочу проверить состояние микро и изменить его через php и websockets.Мой запрос ajax работает, но мой первый запрос после изменения статуса каждый раз бесконечно долго ожидает и вылетает мой xampp apache.Прежде всего, я проверяю статус с помощью моего запроса ajax.Все отлично.После нажатия моей кнопки, чтобы изменить статус, запрос застрянет, и setInterval запустит следующий запрос через 2 секунды.Переключение статуса еще несколько раз приведет к краху apache.Если я удалю setInterval, запрос застрянет также.
html-jquery-код:
<!DOCTYPE html>
<html>
<head>
<title>Mikrofone</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script src="https://code.jquery.com/jquery-latest.js"></script>
<script>check_status();
var hash = "882c2071d8ce7ea8912929bbea384d2d2e653bf9";
$(document).ready(function () {
check_status();
setInterval('check_status()', 2000);
});
function check_status(){
$.ajax({
url: 'http://localhost/neuanfang/mikro.php',
data: {action: hash},
type: 'post',
//async: false,
success:function(output) {
console.log(output);
if (output=="Access denied"){
alert("Wrong Key");
}
else if (output==1){
var head = "Device is Unmuted";
var link = '<form action="mikro.html" method="post"><input onclick="mute()" value="Status Update" type="image" src="Icon_GREEN.png" /></form>';
}
else if (output!=1){
var head = "Device is Muted";
var link = '<form action="mikro.html" method="post"><input onclick="unmute()" value="Status Update" type="image" src="Icon_RED.png" /></form>';
}
$("#HEADER").html(head);
$("#SYMBOL").html(link);
}
});
}
function unmute(){
$.ajax({
url: 'http://localhost/neuanfang/mikro.php',
data: { unmute: hash},
type: 'post',
success:function(output) {
}
});
}
function mute(){
$.ajax({
url: 'http://localhost/neuanfang/mikro.php',
data: { mute: hash},
type: 'post',
success:function(output) {
}
});
}
</script>
</head>
<body>
<table>
<th>
<div id="HEADER"></div>
</th>
</table>
<table>
<tr>
<td>
<div id="SYMBOL"></div>
</td>
</tr>
<tr>
<td>
<a href="http://localhost/neuanfang/mikro.html" onclick="window.open(this.href,'targetWindow','width=440px,height=570px');
return false;"> <p style="text-align:center">Popup-Window</p></a>
</td>
</tr>
</table>
</body>
</html>
php-код:
<?php
# enable sockets in php.ini
# extension=php_sockets.dll
ini_set('display_errors', 10);
ini_set('display_startup_errors', 10);
error_reporting(E_ALL);
set_time_limit(2000);
ini_set('max_execution_time', 2000);
ob_implicit_flush(true);
ob_end_flush();
#echo 'creating socket...';
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === FALSE) {
die('Error creating socket.');
}
#echo 'connecting microphone...';
$result = socket_connect($socket, '192.168.212.2', 2202);
if ($result === FALSE) {
die('Error connecting microphone.');
}
function entry(){
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, '192.168.212.2', 2202);
$cmd = '< GET DEVICE_AUDIO_MUTE >';
socket_write($socket, $cmd, strlen($cmd));
while (($out = socket_read($socket, 2048, PHP_BINARY_READ)) !== FALSE) {
if ($out === '< REP DEVICE_AUDIO_MUTE ON >'){
echo 0;
}
if ($out === '< REP DEVICE_AUDIO_MUTE OFF >'){
echo 1;
}
if (substr($out, -1) === '>') break;
}
}
function mute(){
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, '192.168.212.2', 2202);
$cmd = '< SET DEVICE_AUDIO_MUTE ON >';
socket_write($socket, $cmd, strlen($cmd));
while (($out = socket_read($socket, 2048, PHP_BINARY_READ)) !== FALSE) {
if (substr($out, -1) === '>') break;
}
}
function unmute(){
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, '192.168.212.2', 2202);
$cmd = '< SET DEVICE_AUDIO_MUTE OFF >';
socket_write($socket, $cmd, strlen($cmd));
while (($out = socket_read($socket, 2048, PHP_BINARY_READ)) !== FALSE) {
if (substr($out, -1) === '>') break;
}
}
function check($post){
$key= array(
'882c2071d8ce7ea8912929bbea384d2d2e653bf9'
);
if (!in_array($post,$key)) {
die('Access denied');
}
}
if(isset($_POST['unmute']) && !empty($_POST['unmute'])) {
$post=$_POST['unmute'];
check($post);
unmute();
}
if(isset($_POST['mute']) && !empty($_POST['mute'])) {
$post=$_POST['mute'];
check($post);
mute();
}
if(isset($_POST['action']) && !empty($_POST['action'])) {
$post=$_POST['action'];
check($post);
entry();
}
socket_close($socket);
?>
Browser-Consol