स्वस्थ सर्वर वातावरण बनाए रखने के लिए उपयोगकर्ता डिस्क स्थान का कुशलतापूर्वक प्रबंधन महत्वपूर्ण है। यह लेख विभिन्न परिदृश्यों और प्राथमिकताओं को पूरा करते हुए, लिनक्स सिस्टम पर उपयोगकर्ता कोटा जानकारी प्राप्त करने के लिए कई PHP-आधारित विधियों का पता लगाता है। हम मानक लिनक्स कमांड का लाभ उठाने से लेकर डेटाबेस समाधानों और IMAP फ़ंक्शंस का उपयोग करने तक की तकनीकों को कवर करेंगे, सुरक्षित और मजबूत कार्यान्वयन पर ध्यान केंद्रित करेंगे।
विषय-सूची
- सिस्टम-वाइड कोटा रिपोर्टिंग के लिए
repquota
का उपयोग करना du
के साथ उपयोग का अनुमान लगाना- MySQL डेटाबेस से कोटा प्राप्त करना
- IMAP मेलबॉक्स कोटा तक पहुँचना
- Cron के साथ कोटा जाँच शेड्यूल करना
सिस्टम-वाइड कोटा रिपोर्टिंग के लिए repquota
का उपयोग करना
repquota -a
कमांड आपके फाइल सिस्टम में उपयोगकर्ता कोटा की व्यापक रिपोर्ट प्रदान करता है। PHP इस कमांड को shell_exec()
का उपयोग करके निष्पादित कर सकता है और परिणामी आउटपुट को पार्स कर सकता है। महत्वपूर्ण सुरक्षा नोट: कमांड इंजेक्शन भेद्यताओं को रोकने के लिए उन्हें शेल कमांड में शामिल करने से पहले हमेशा उपयोगकर्ता इनपुट को साफ करें।
&1'); // 2>&1 बेहतर त्रुटि हैंडलिंग के लिए stderr को stdout पर रीडायरेक्ट करता है
if ($output === null || strpos($output, 'repquota: ') === 0) { // repquota निष्पादन में त्रुटियों की जाँच करें
error_log("Error executing repquota: " . $output);
echo "कोटा जानकारी प्राप्त करने में त्रुटि।";
exit(1);
}
$lines = explode("n", trim($output));
$quotas = [];
foreach ($lines as $line) {
if (strpos($line, "/") !== false) { // हेडर लाइनों को छोड़ें
continue;
}
$parts = preg_split('/s+/', $line); // मजबूत स्पेस हैंडलिंग के लिए preg_split का उपयोग करें
if(count($parts) > 5){ // सुनिश्चित करें कि पर्याप्त डेटा मौजूद है
$username = $parts[0];
$used = $parts[1];
$limit = $parts[2];
$quotas[$username] = ['used' => $used, 'limit' => $limit];
}
}
print_r($quotas); // परिणाम प्रदर्शित करें
?>
du
के साथ उपयोग का अनुमान लगाना
du -sh
कमांड किसी दिए गए निर्देशिका के लिए डिस्क उपयोग का सारांश प्रदान करता है। हालांकि यह सीधा कोटा पुनर्प्राप्ति नहीं है, यह किसी उपयोगकर्ता की होम निर्देशिका द्वारा उपयोग किए जाने वाले डिस्क स्थान का अनुमान लगाने के लिए उपयोगी है। संभावित त्रुटियों को संभालना याद रखें, जैसे कि निर्देशिका का मौजूद न होना।
&1");
if ($output === null || strpos($output, "du: cannot access") === 0) {
return false; // त्रुटियों को सुचारू रूप से संभालें
}
list($size, $path) = explode("t", trim($output));
return $size;
}
$username = "user1";
$homeDir = "/home/{$username}";
$size = getDirectorySize($homeDir);
if ($size !== false) {
echo "{$username}'s होम निर्देशिका आकार: {$size}n";
} else {
echo "{$username} के लिए निर्देशिका आकार प्राप्त करने में त्रुटिn";
}
?>
MySQL डेटाबेस से कोटा प्राप्त करना
यदि आप उपयोगकर्ता कोटा को ट्रैक करने के लिए MySQL डेटाबेस बनाए रखते हैं, तो PHP का MySQLi एक्सटेंशन इस जानकारी को पुनः प्राप्त करने का एक सुविधाजनक तरीका प्रदान करता है। SQL इंजेक्शन को रोकने के लिए पैरामीटराइज़्ड क्वेरी का उपयोग करना याद रखें।
connect_errno) {
die("कनेक्शन विफल: " . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT quota FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$username = "user1";
$stmt->execute();
$stmt->bind_result($quota);
$stmt->fetch();
$stmt->close();
$mysqli->close();
echo "{$username}'s कोटा: " . $quota . "n";
?>
IMAP मेलबॉक्स कोटा तक पहुँचना
imap_get_quota()
फ़ंक्शन विशेष रूप से IMAP सर्वर के लिए मेलबॉक्स कोटा प्राप्त करने के लिए डिज़ाइन किया गया है। यह प्रासंगिक है यदि आप ईमेल खाते और उनकी संग्रहण सीमा का प्रबंधन करते हैं।
usage . " बाइट्स का " . $quota->limit . " बाइट्सn";
imap_close($imapStream);
} else {
echo "IMAP सर्वर से कनेक्ट करने में विफल: " . imap_last_error() . "n";
}
?>
Cron के साथ कोटा जाँच शेड्यूल करना
स्वचालित कोटा निगरानी के लिए, cron जॉब्स का लाभ उठाएँ। एक शेल स्क्रिप्ट repquota
चला सकता है, और एक PHP स्क्रिप्ट आउटपुट को संसाधित कर सकती है, रिपोर्ट या अलर्ट उत्पन्न कर सकती है। यह लगातार PHP प्रक्रिया निष्पादन के बिना नियमित जांच की अनुमति देता है।