<?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"; | |
} | |
?> |