PHP ile Apache Kurtarmaca
Bazen ağır yük altında çalışan servislerin saçma sapan sekteye uğradığına tanık oluyorum. Eğer kökten çözum o an için külfetli bir hal aldıysa minik scriptler ile günü kurtarmayı tercih ediyorum. Aslında bu geçici çözümü, TCP çalışan herhangi bir servise uygulayabilirsiniz. Ben TCP Port 80 için olanını paylaşıyorum, siz ihtiyacınız dogrultusunda değişiklik yaparsınız elbet.
Script PHP ile socket baglantisi aciyor ve ön tanimli süre(5 saniye) boyunca servisten cevap alamazsa servisi yeniden başlatıyor. Script FreeBSD, OpenSUSE Server ve Ubuntu Server üzerinde çalıştı ve beni baş ağrısından bir süreliğine kurtardı.
Shebang pathini ve servisin rc scriptini sisteminize göre düzenlemek durumunda olduğunuzu hatırlatmama gerek var mi? Aşağıdaki kod Ubuntu Server pathine göre ayarlandı.
Mubabbetle kullanınız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/usr/bin/php <?php set_time_limit(0); $pf = "/tmp/httpFixxer.pid"; $address='IP BURAYA GELECEK'; $port = 80; if(!file_exists($pf)) { touch($pf); $socket=socket_create(AF_INET, SOCK_STREAM, SOL_TCP); @socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO,array('sec' => 5, 'usec' => 1)); if (!@socket_connect($socket, $address, $port)) { shell_exec("/etc/init.d/apache2 restart"); socket_close($socket); @unlink($pf); } @unlink($pf); } ?> |
