blob: 988d7eef2db593609d495fbadd5ea57b561f9fcf [file] [log] [blame]
<?php
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @category tests
* @package log4php
* @subpackage appenders
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @link http://logging.apache.org/log4php
*
* A simple socket server used in LoggerAppenderSocketTest.
*/
// Port on which to start the server
define('SERVER_PORT', 12345);
// Prevent hangs
set_time_limit(0);
// Create a socket
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($sock === false) {
die("Failed creating socket: " . socket_strerror(socket_last_error()));
}
if (socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1) === false) {
die("Failed setting socket options: " . socket_strerror(socket_last_error()));
}
if (socket_bind($sock, 'localhost', SERVER_PORT) === false) {
die("Failed binding socket: " . socket_strerror(socket_last_error()));
}
if (socket_listen($sock, 100) === false) {
die("Failed binding socket: " . socket_strerror(socket_last_error()));
}
socket_getsockname($sock, $addr, $port);
myLog("Server Listening on $addr:$port");
// Buffer which will store incoming messages
$playback = "";
while(true) {
myLog("Waiting for incoming connections...");
$msgsock = socket_accept($sock);
if ($msgsock === false) {
myLog("Failed accepting a connection: " . socket_strerror(socket_last_error()));
break;
}
$buf = socket_read($msgsock, 2048, PHP_NORMAL_READ);
myLog('Received: "' . trim($buf) . '"');
// Shutdown command
if (trim($buf) == 'shutdown') {
myLog("Shutting down.");
socket_close($msgsock);
break;
}
// Playback command
else if (trim($buf) == 'playback') {
myLog("Returning playback: \"$playback\"");
socket_write($msgsock, $playback);
}
// Default: add to playback buffer
else {
$playback .= trim($buf);
}
socket_close($msgsock);
}
myLog("Closing socket.");
socket_close($sock);
function myLog($msg) {
echo date("Y-m-d H:i:s") . " $msg\n";
}
?>