Все обнаруженные хосты (0)
Хосты пока не обнаружены. Установите хук для начала мониторинга.
Для автоматического логирования исходящих запросов добавьте код ниже в
/bitrix/php_interface/init.php
Код для init.php
<?php
/**
* Хук для перехвата исходящих HTTP-запросов
* Добавьте в /bitrix/php_interface/init.php
*/
// Путь к монитору трафика
define('TRAFFIC_MONITOR_PATH', '<?= $selfPath ?>');
// Перехват cURL
if (!function_exists('curl_exec_original')) {
function logCurlRequest($ch, $result) {
if (!file_exists(TRAFFIC_MONITOR_PATH)) return;
$info = curl_getinfo($ch);
$url = $info['url'] ?? '';
if (empty($url)) return;
require_once TRAFFIC_MONITOR_PATH;
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5);
$source = $trace[1] ?? [];
logOutgoingRequest(
$url,
'CURL',
$info['http_code'] ?? null,
$info['total_time'] ?? null,
[
'source_file' => $source['file'] ?? null,
'source_line' => $source['line'] ?? null,
]
);
}
}
// Обработчик для Bitrix HttpClient
AddEventHandler('main', 'OnAfterHttpClientRequest', function($httpClient) {
if (!file_exists(TRAFFIC_MONITOR_PATH)) return;
require_once TRAFFIC_MONITOR_PATH;
$url = $httpClient->getEffectiveUrl();
$responseCode = $httpClient->getStatus();
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 10);
$source = null;
foreach ($trace as $t) {
if (!empty($t['file']) && strpos($t['file'], '/bitrix/modules/') === false) {
$source = $t;
break;
}
}
logOutgoingRequest(
$url,
$httpClient->getRequestMethod(),
$responseCode,
null,
[
'source_file' => $source['file'] ?? null,
'source_line' => $source['line'] ?? null,
]
);
});
Ручное логирование
Вы также можете вызывать функцию логирования вручную:
<?php
require_once '/path/to/bitrix_traffic_monitor.php';
// Перед выполнением запроса
$startTime = microtime(true);
// ... ваш код запроса ...
// После выполнения
$duration = microtime(true) - $startTime;
logOutgoingRequest(
'https://api.example.com/data',
'POST',
200,
$duration,
['source_file' => __FILE__, 'source_line' => __LINE__]
);
Требования
- PHP 7.4+ (рекомендуется 8.0+)
- Права на запись в директорию логов
- Для полного перехвата — добавление хука в init.php