Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP OPcache Issues Debug और Log करना


PHP OPcache संबंधित issues को debug और diagnose करने के तरीके।

त्वरित निदान: OPcache अस्थायी रूप से अक्षम करें

<?php
// Script के शीर्ष पर रखें
ini_set('opcache.enable', 0);

// या .user.ini में
opcache.enable=0

// या php.ini में
opcache.enable=0

यदि issue resolve हो जाता है, तो OPcache culprit है।

Error Reporting सक्षम करें

<?php
// Development के लिए
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Production के लिए logging
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', '/var/log/php_errors.log');
error_reporting(E_ALL);

OPcache Status और Configuration Check करें

<?php
// OPcache status
$status = opcache_get_status();
print_r($status);

// Key metrics to check:
echo "Enabled: " . ($status['opcache_enabled'] ? 'Yes' : 'No') . "\n";
echo "Memory used: " . round($status['memory_usage']['used_memory'] / 1024 / 1024, 2) . " MB\n";
echo "Memory free: " . round($status['memory_usage']['free_memory'] / 1024 / 1024, 2) . " MB\n";
echo "Wasted: " . round($status['memory_usage']['wasted_memory'] / 1024 / 1024, 2) . " MB\n";
echo "Cached scripts: " . $status['opcache_statistics']['num_cached_scripts'] . "\n";
echo "Hit rate: " . round($status['opcache_statistics']['opcache_hit_rate'], 2) . "%\n";

OPcache Configuration Optimization (php.ini)

; OPcache settings
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256        ; MB (increase if wasted memory high)
opcache.interned_strings_buffer=16    ; MB
opcache.max_accelerated_files=20000   ; Increase for large apps
opcache.revalidate_freq=0             ; 0 = check every request (dev), >0 for prod
opcache.validate_timestamps=1         ; 1 = check timestamps, 0 = never (prod)
opcache.save_comments=1               ; Required for annotations
opcache.fast_shutdown=1               ; Faster shutdown
opcache.enable_file_override=0        ; Security
opcache.optimization_level=0x7FFFBFFF ; All optimizations

; Logging
opcache.error_log=/var/log/opcache.log
opcache.log_verbosity_level=1         ; 1 = errors only, 2 = warnings, 3 = info

Common Issues और Solutions

IssueSymptomsSolution
Stale cacheCode changes not reflectedSet opcache.validate_timestamps=1, opcache.revalidate_freq=0 (dev)
Memory exhaustion"Cannot allocate memory"Increase opcache.memory_consumption
Corrupted cacheRandom crashes, segfaultsopcache_reset() or restart PHP-FPM
File permission issuesPermission denied errorsCheck file ownership, opcache.file_cache permissions
Symlink issuesDeployments not picked upUse opcache.validate_timestamps=1 or restart after deploy

Cache Clear करने के तरीके

<?php
// Programmatically
opcache_reset(); // All caches clear

// Specific file (PHP 7.0+)
opcache_invalidate('/path/to/file.php', true); // true = force

// CLI से
php -r "opcache_reset();"

// Systemd के साथ
systemctl reload php-fpm
# या
systemctl restart php-fpm

Xdebug के साथ Advanced Debugging

<?php
// Xdebug + OPcache compatibility
// xdebug.mode=debug,develop
// xdebug.start_with_request=yes

// OPcache के साथ Xdebug काम करता है लेकिन:
// - Breakpoints optimized-out code पर नहीं लग सकते
// - Variable values optimized away हो सकते हैं

// Development के लिए OPcache disable करें:
ini_set('opcache.enable', 0);

Deployment Best Practices

# Deploy script में OPcache clear करें
#!/bin/bash
# 1. Deploy new code
# 2. Clear OPcache
php -r "opcache_reset();"
# 3. या PHP-FPM reload (clears cache)
systemctl reload php-fpm

# Zero-downtime के लिए: atomic symlink swap + reload

Monitoring Script

<?php
// opcache_monitor.php - cron job के लिए
$status = opcache_get_status();
$hitRate = $status['opcache_statistics']['opcache_hit_rate'];
$wastedPct = ($status['memory_usage']['wasted_memory'] / $status['memory_usage']['used_memory']) * 100;

if ($hitRate < 90) {
    error_log("OPcache hit rate low: {$hitRate}%");
}

if ($wastedPct > 10) {
    error_log("OPcache wasted memory high: {$wastedPct}%");
    // Consider restart or increase memory
}
  1. विंडोज 10 एडमिनिस्ट्रेटर और यूजर पासवर्ड आसानी से रीसेट या हटाएं विंडोज 10 एडमिनिस्ट्रेटर और यूजर पासवर्ड आसानी से रीसेट या हटाएं

    मैंने अपने पीसी पर विंडोज 10 इंस्टॉल किया, लेकिन कुछ दिनों बाद एडमिनिस्ट्रेटर पासवर्ड भूल गया। मैं पासवर्ड के बिना विंडोज 10 में कैसे साइन इन कर सकता हूं? कोई कार्यशील समाधान सराहनीय है। विंडोज 10 फोरम पर एक उपयोगकर्ता ने इसकी सूचना दी। विंडोज 10 कंप्यूटर पर पासवर्ड जोड़ना आपके कंप्यूटर को सुरक्षित

  1. विंडोज 10 अपडेट और सुरक्षा समस्याओं को जल्दी ठीक करें - चरण-दर-चरण गाइड विंडोज 10 अपडेट और सुरक्षा समस्याओं को जल्दी ठीक करें - चरण-दर-चरण गाइड

    अपडेट और सुरक्षा विंडोज 10 एक बहुत महत्वपूर्ण सेटिंग है। वास्तव में, यह आपके विंडोज कंप्यूटर के लिए महत्वपूर्ण विंडोज 10 अपडेट लाने के लिए प्रसिद्ध है। कुछ उपयोगकर्ताओं ने बताया है कि वे विंडोज 10 अपडेट और सुरक्षा को खोलने में असमर्थ हैं, या हर बार जब वे इसे खोलने का प्रयास करते हैं, तो यह अचानक क्र

  1. अपने PC पर वीडियो प्लेबैक त्रुटियों को कैसे हल करें: चरण-दर-चरण गाइड अपने PC पर वीडियो प्लेबैक त्रुटियों को कैसे हल करें: चरण-दर-चरण गाइड

    हर कोई स्मूथ वीडियो प्लेबैक चाहता है, लेकिन कुछ आपके अनुभव को खराब कर सकते हैं। वीडियो प्लेबैक त्रुटियां कई रूपों में सामने आ सकती हैं। आप वीडियो चलाने में सक्षम नहीं हो सकते हैं, या आपको झिलमिलाते वीडियो, वीडियो का ऑडियो के साथ सिंक न होना, पैची वीडियो प्लेबैक आदि जैसे मुद्दों का सामना करना पड़ सकत