PHP for System Programming: Stereotypes Ko Todna
\n\nJab hum "system programming" sunte hain, to dimaag mein turant C, Rust ya Go aate hain. PHP? Sachi? Bilkul. Adhiktam developers ko bhi nahi pata ki PHP sirf web forms aur WordPress ke liye nahi hai. Yeh ek poora language hai jo processes ko manage kar sakta hai, sockets ke saath kaam kar sakta hai, daemons bana sakta hai aur operating system kernel ke saath interact kar sakta hai. Is article mein hum dekhenge ki PHP aapke system programming ke liye ek upkaran kaise ban sakta hai, aur asli code examples dikhayenge.
\n\nAakhir yeh kyun zaroori hai? Sochiye: aapko server monitoring utility, real-time log handler ya ek simple task scheduler likhna hai. Aap PHP jaante hain, aur ek simple task ke liye C seekhna overkill hai. PHP for system programming aapko aise tasks ko jaldi aur bina dard ke hal karne mein madad karta hai. Chaliye gehraai mein jaate hain.
\n\nPHP mein System Programming Kya Hai?
\n\nSystem programming un programs ka vikas hai jo hardware aur operating system ke saath low level par interact karte hain. PHP mein yeh pcntl, posix, sockets extensions aur files aur processes ke saath kaam karne ke built-in functions ke karan sambhav hai. PHP drivers likhne ke liye nahi bana hai, lekin system utilities, daemons aur automation scripts banane ke liye yeh bahut upyukt hai.
PHP ki System Programming ke Liye Mukhya Kshamataen
\n\n- \n
- Process Management — banana, khatam karna, pratiksha karna (pcntl_fork, pcntl_wait). \n
- Signals — SIGTERM, SIGHUP aur anya ka handling (pcntl_signal). \n
- Access Rights — UID, GID, masks ke saath kaam (posix_getuid, posix_setuid). \n
- Sockets — servers aur clients banana (socket_create, socket_bind). \n
- File System — inode, hard links, badlav ki monitoring (inotify). \n
- Parallel Execution — multi-processing, threads (pthreads, parallel processes). \n
Yeh sabhi kshamataen "out of the box" ya standard extensions ke through uplabdh hain. Kisi bhi third-party library ki zaroorat nahi hai.
\n\nUdaharan 1: PHP mein Daemon Monitoring
\n\nEk simple daemon likhte hain jo har 10 second mein check karta hai ki nginx process chal raha hai ya nahi, aur log likhta hai. Yeh system programming ka ek classic task hai.
\n\n<?php\n// Nginx monitoring ke liye daemon\ndeclare(ticks = 1);\n\n// Daemon ke roop mein shuru karna\nfunction daemonize() {\n $pid = pcntl_fork();\n if ($pid == -1) {\n die("Fork mein triputi\\n");\n } elseif ($pid) {\n // Parent process ko khatam karte hain\n exit(0);\n }\n // Child process — naya session\n posix_setsid();\n}\n\ndaemonize();\n\n// Signals ka handling\npcntl_signal(SIGTERM, function($signo) {\n file_put_contents('/var/log/monitor.log', "SIGTERM prapt hua, samapt ho raha hoon\\n", FILE_APPEND);\n exit(0);\n});\n\n// Mukhya loop\nwhile (true) {\n // shell_exec ke through nginx check karna\n $output = shell_exec('pgrep nginx | wc -l');\n $count = trim($output);\n $log = "[" . date('Y-m-d H:i:s') . "] Nginx processes: " . $count . "\\n";\n file_put_contents('/var/log/monitor.log', $log, FILE_APPEND);\n sleep(10);\n}\n?>\n\n\nYeh code PHP for system programming ko karyakshetra mein pradarshit karta hai: process fork, daemon banana, signal handling aur system utilities ke saath kaam. Script ko background mein chalaayein — aur yeh ek asli service ki tarah kaam karta hai.
\n\nUdaharan 2: Forks ka Upyog Karke Parallel Data Processing
\n\nSochiye ki aapko 1000 log files process karni hain. Sequential processing mein ghante lagenge. PHP mein multi-processing ka upyog karte hain.
\n\n<?php\n$files = glob('/var/log/*.log');\n$maxWorkers = 4;\n$workers = [];\n\nforeach ($files as $file) {\n // Agar workers ki seema tak pahunch gaye hain — samapt hone ka intezaar karein\n while (count($workers) >=