Merge pull request #2105 from Squidly271/patch-60

Refactor: Reload nginx if nchan out of shared_memory
This commit is contained in:
tom mortensen
2025-04-02 11:29:05 -07:00
committed by GitHub
+19 -1
View File
@@ -25,16 +25,34 @@ function curl_socket($socket, $url, $message='') {
}
function publish($endpoint, $message, $len=1) {
if ( is_file("/tmp/publishPaused") )
return false;
$com = curl_init("http://localhost/pub/$endpoint?buffer_length=$len");
curl_setopt_array($com,[
CURLOPT_UNIX_SOCKET_PATH => "/var/run/nginx.socket",
CURLOPT_HTTPHEADER => ['Accept:text/json'],
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $message,
CURLOPT_RETURNTRANSFER => 1
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FAILONERROR => true
]);
$reply = curl_exec($com);
$err = curl_error($com);
curl_close($com);
if ($err) {
preg_match_all("/[0-9]+/",$err,$matches);
// 500: out of shared memory when creating a channel
// 507: out of shared memory publishing a message
if ( ($matches[0][0] ?? "") == 507 || ($matches[0][0] ?? "") == 500 ) {
my_logger("Nchan out of shared memory. Reloading nginx");
// prevent multiple attempts at restarting from other scripts using publish.php
touch("/tmp/publishPaused");
exec("/etc/rc.d/rc.nginx reload");
@unlink("/tmp/publishPaused");
}
}
if ($reply===false) my_logger("curl to $endpoint failed", 'publish');
return $reply;
}