У меня есть игровой сайт, разработанный с использованием flash и php. PHP-код содержит 4000 строк, и он будет работать как cron. Внутри кода есть один цикл while, который будет запускать бесконечно , чтобы проверить, записаны ли в сокет любые данные и, соответственно, вызвать различные функции и отправить результаты обратно в сокеты. От вспышки он получит результаты и будет отображаться.
Проблема, с которой я сталкиваюсь, заключается в том, что где-то в php-коде происходит утечка памяти. Поскольку он очень большой, я не могу узнать, откуда это происходит. Более того, он может быть запущен только как cron. Есть ли какой-нибудь инструмент для обнаружения утечки памяти? Я слышал о xdebug, но я не использовал. Любой другой?
check.php (как cron)
$sock = fsockopen(IP_ADDRESS, PORT, $sock_error_code, $sock_error_string, 10); if (!$sock){
$message = "Server was down, restarting...\n\n";
$last_line = system("php -q gameserver/server.php", $retval);} else {
$message = "Server is up...";
$message .= $sock_error_string." (".$sock_error_code.")\n\n";}
server.php (только некоторая часть)
class gameserver {
var $server_running = true;
function gameserver() {
global $cfg, $db;
$this->max_connections = $cfg["server"]["max-connections"];
$this->start_socket();
echo "Gameserver initialized\n";
while ($this->server_running) {
$read = $this->get_socket_list();
$temp = socket_select($read, $null, $null, 0, 15);
if (!empty($read)) {
$this->read_sockets($read);
}
$db->reconnection();
$this->update_DB_records();
$this->check_games_progress();
if ($this->soft_shutdown && $this->active_games == 0) {
$this->server_running = false;
echo "soft shutdown complete\n";
}
}
$this->stop_socket();
echo "Server shut down\n";
}} $server = new gameserver();