php പിശകുകൾ രേഖപ്പെടുത്തുന്നു. Zend Log ഉപയോഗിച്ച് PHP-യിൽ ലോഗിൻ ചെയ്യുന്നു. ഒരു ലോഗ് ഫയൽ സൃഷ്ടിക്കാൻ PHP സ്ക്രിപ്റ്റ്

എല്ലാ യഥാർത്ഥത്തിലും PHPആപ്ലിക്കേഷനുകളും പിശകുകളും ഒഴിവാക്കലുകളും കാലാകാലങ്ങളിൽ സംഭവിക്കുന്നു, മുന്നറിയിപ്പുകളും സന്ദേശങ്ങളും പോപ്പ് അപ്പ് ചെയ്യുന്നു. ഞങ്ങൾ ഈ വിവരങ്ങൾ (ലോഗ്) എഴുതുന്നില്ലെങ്കിൽ, ഒരു ഘട്ടത്തിൽ ആപ്ലിക്കേഷന്റെ ഏത് ഭാഗത്താണ് ഈ പിശകുകളും ഒഴിവാക്കലുകളും സംഭവിക്കുന്നതെന്ന് മനസിലാക്കാൻ കഴിയില്ല, അതനുസരിച്ച്, ഞങ്ങൾക്ക് അവ പരിഹരിക്കാൻ കഴിയില്ല. കൂടാതെ, ഇവന്റുകളും പ്രവർത്തനങ്ങളും ലോഗിൻ ചെയ്യേണ്ട സാഹചര്യങ്ങളുണ്ട്, ഉദാഹരണത്തിന്, ഒരു ഉപയോക്താവ് സിസ്റ്റത്തിലേക്ക് ലോഗിൻ ചെയ്യുന്നതും പുറത്തേക്ക് വരുന്നതും പോലെ.

IN ആവശ്യമായ ലോഗിംഗ് സൗകര്യങ്ങൾ PHP-യിൽ ഇതിനകം ഉണ്ട്: പ്രവർത്തനം error_log()- സിസ്റ്റം ലോഗിലേക്ക് ഒരു സന്ദേശം അയയ്ക്കാൻ, ഫംഗ്ഷൻ set_error_handler(), മുന്നറിയിപ്പുകളും പിശകുകളും തടസ്സപ്പെടുത്താൻ. ഈ ഫംഗ്‌ഷനുകൾ ഇഷ്‌ടാനുസൃത പിശക് മാനേജുമെന്റിനായി ഉപയോഗിക്കാം, ഇത് കോഡ് ഡെവലപ്പർക്ക് പിശക് കൈകാര്യം ചെയ്യലും യുക്തി ഫിൽട്ടറിംഗ് ചെയ്യലും സ്വതന്ത്രമായി നിയന്ത്രിക്കാനുള്ള കഴിവ് നൽകുന്നു.

എന്നിരുന്നാലും, അത്തരം ലോ-ലെവൽ ആക്സസ് ഇടയ്ക്കിടെ കോഡ് ഡ്യൂപ്ലിക്കേഷനിൽ കലാശിക്കുന്നു, അതിലും പ്രധാനമായി, അത്തരം കോഡ് പിശകുകൾക്ക് കൂടുതൽ സാധ്യതയുള്ളതാണ്. അതിനാൽ, റെഡിമെയ്ഡ് ഘടകങ്ങൾ, നന്നായി പരീക്ഷിക്കുകയും "യുദ്ധ" സാഹചര്യങ്ങളിൽ തെളിയിക്കപ്പെടുകയും ചെയ്യുന്നു, പ്രോഗ്രാമറുടെ സഹായത്തിന് വരുന്നു.

അത്തരം ഘടകങ്ങൾ ഉൾപ്പെടുന്നു zend-log ഘടകംനിന്ന് Zend ചട്ടക്കൂട്. ഘടകം zend-logഒരു മൾട്ടി പർപ്പസ് ലോഗിംഗ് ഘടകമായി ഉപയോഗിക്കാം, എല്ലാ ട്രേഡുകളുടെയും ഒരു തരം ജാക്ക്. ഇത് നിരവധി ലോഗ് സന്ദേശ ഫോർമാറ്റുകളെയും ലോഗിംഗ് ഡാറ്റാബേസുകളുടെ തരങ്ങളെയും (ഫയലുകൾ, ഡാറ്റാബേസുകൾ) പിന്തുണയ്ക്കുന്നു, കൂടാതെ ഇതിന് ഒരു നൂതന സന്ദേശ ഫിൽട്ടറിംഗ് സിസ്റ്റവും അതിലേറെയും ഉണ്ട്. കൂടാതെ zend-logയുമായി പൊരുത്തപ്പെടുന്നു പിഎസ്ആർ-3ലോഗിംഗ് സ്റ്റാൻഡേർഡ്. ഇതുപോലെ ഇൻസ്റ്റാൾ ചെയ്തു:

കമ്പോസർക്ക് zendframework/zend-log ആവശ്യമാണ്

ഇത് ഇനിപ്പറയുന്ന രീതിയിൽ ഉപയോഗിക്കുന്നു (ഉദാഹരണത്തിന്, പ്രോജക്റ്റ് റൂട്ടിലെ index.php ഫയൽ ഉപയോഗിക്കുന്നു):

"vendor/autoload.php" ആവശ്യമാണ്;

Zend\Log\Logger ഉപയോഗിക്കുക;
സെൻഡ്\ലോഗ്\റൈറ്റർ\സ്ട്രീം ഉപയോഗിക്കുക;

$logger = പുതിയ ലോഗർ;

// കൺസോളിലേക്ക് പിശകുകൾ അയയ്ക്കുക
$റൈറ്റർ = പുതിയ സ്ട്രീം("php://ouput");

$logger -> addWriter($writer);
$logger -> ലോഗ്(ലോഗർ::INFO,"ചില വിവരങ്ങൾ");

മുകളിലെ കോഡ് പ്രവർത്തിപ്പിക്കുന്നതിന്റെ ഫലം:

2017-09-26T10:40:34+03:00 വിവരം(6): ചില വിവരങ്ങൾ

സംഗ്രഹ വരിയിൽ ഇവന്റ് സമയം, മുൻഗണന, സന്ദേശം എന്നിവ ഉൾപ്പെടുന്നു. ഔട്ട്പുട്ട് സന്ദേശത്തിന്റെ ഫോർമാറ്റ് തീർച്ചയായും മാറ്റാവുന്നതാണ്, ആവശ്യമെങ്കിൽ, രീതി ഉപയോഗിച്ച് setFormatter(). സ്ഥിരസ്ഥിതിയായി, ലോഗ് ലൈൻ ഇനിപ്പറയുന്ന പാറ്റേൺ ഉപയോഗിച്ച് വിവരിച്ചിരിക്കുന്നു:

%ടൈംസ്റ്റാമ്പ്% %priorityName% (%priority%): %message% %extra%

  1. %ടൈംസ്റ്റാമ്പ്% ഒരു ടൈംസ്റ്റാമ്പാണ്
  2. %priorityName% - മുൻഗണനാ ടെക്സ്റ്റ് ലേബൽ
  3. %മുൻഗണന% - സംഖ്യാ മുൻഗണനാ ലേബൽ
  4. %സന്ദേശം% - സന്ദേശം
  5. %extra% - അധിക വിവരങ്ങൾക്കുള്ള ഓപ്ഷണൽ മൂല്യം

നിങ്ങൾക്ക് സന്ദേശ ഫോർമാറ്റ് മാറ്റണമെങ്കിൽ, ഇത് ഇനിപ്പറയുന്ന രീതിയിൽ ചെയ്യുക:

$formatter = പുതിയ Zend\Log\Formatter\Simple("message %message%" . PHP_EOL);
$റൈറ്റർ -> setFormatter($formatter);

ഘടകം zend-logപിഎച്ച്പി ഇന്റർപ്രെറ്ററിൽ നിന്ന് തന്നെ പിശകുകളും ഒഴിവാക്കലുകളും ലോഗ് ചെയ്യാനും ഉപയോഗിക്കാം. ഇത് ചെയ്യുന്നതിന്, ലോഗർ ക്ലാസിൽ രണ്ട് സ്റ്റാറ്റിക് രീതികളുണ്ട്: ലോഗർ::registerErrorHandler($logger)- പിശകുകൾ തടയുന്നതിനും ലോഗർ::registerExceptionHandler($logger)- ഒഴിവാക്കലുകൾ പിടിക്കാൻ.

Zend\Log\Logger ഉപയോഗിക്കുക;
Zend\Log\Writer ഉപയോഗിക്കുക;

$logger = പുതിയ ലോഗർ;
$റൈറ്റർ = പുതിയ റൈറ്റർ\സ്ട്രീം(__DIR__ . "/test.log");
$logger->addWriter($writer);

// ലോഗ് പിശകുകൾ
ലോഗർ::registerErrorHandler($logger);

// ലോഗ് ഒഴിവാക്കലുകൾ
ലോഗർ::registerExceptionHandler($logger);

നേരത്തെ സൂചിപ്പിച്ചതുപോലെ, zend-logലോഗിംഗിനായി സന്ദേശങ്ങൾ ഫിൽട്ടർ ചെയ്യാനുള്ള കഴിവ് ഞങ്ങൾക്ക് നൽകുന്നു, അതായത്. ലോഗിലേക്ക് ഒരു സന്ദേശം എഴുതുന്നതിന് മുമ്പ്, അത് ഞങ്ങളുടെ മാനദണ്ഡങ്ങൾ പാലിക്കുന്നുണ്ടോ എന്ന് നമുക്ക് നോക്കാം, അങ്ങനെയാണെങ്കിൽ, ഞങ്ങൾ അത് എഴുതുന്നു.

ഒരു ഉദാഹരണം ഇതാ:

$ഫിൽറ്റർ = പുതിയ Zend\Log\Filter\priority(Logger ::CRIT);

// റൈറ്റർ ഇന്റർഫേസിന്റെ addFilter രീതി
$writer->addFilter($filter);

ഈ ഉദാഹരണത്തിൽ, മുൻ‌ഗണന നിർണായകമായതിനേക്കാൾ കുറവോ തുല്യമോ ആയ സന്ദേശങ്ങൾ മാത്രമേ ഞങ്ങൾ ലോഗ് ചെയ്യുകയുള്ളൂ ( ലോഗർ::CRIT).

ക്ലാസിൽ നിർവചിച്ചിരിക്കുന്ന മുൻഗണനകളുടെ പൂർണ്ണമായ ലിസ്റ്റ് Zend\Log\Logger:

കോൺസ്റ്റ് EMERG = 0; // അലാറം: സിസ്റ്റം ഉപയോഗശൂന്യമാണ്
കോൺസ്റ്റ് അലേർട്ട് = 1; // അലാറം: അടിയന്തര നടപടി സ്വീകരിക്കേണ്ടതുണ്ട്
കോൺസ്റ്റ് CRIT = 2; // ഗുരുതരാവസ്ഥ
കോൺസ്റ്റ് ERR = 3; //പിശക്
const WARN = 4; // മുന്നറിയിപ്പ്
const അറിയിപ്പ് = 5; // ശ്രദ്ധ
കോൺസ്റ്റ് വിവരം = 6; //വിവരങ്ങൾ
കോൺസ്റ്റ് ഡീബഗ് = 7; // ഡീബഗ്, ഡീബഗ്ഗിംഗ്

സാധാരണ എക്‌സ്‌പ്രഷനുകൾ, ടൈംസ്റ്റാമ്പുകൾ മുതലായവയെ അടിസ്ഥാനമാക്കി നമുക്ക് സന്ദേശങ്ങൾ ഫിൽട്ടർ ചെയ്യാനും കഴിയും. അങ്ങനെ, PHP-യിൽ ലോഗിൻ ചെയ്യുന്നു- ഇത് വികസിപ്പിക്കുമ്പോൾ പ്രധാനപ്പെട്ടതും ചിലപ്പോൾ ആവശ്യമുള്ളതുമായ കാര്യമാണ് വെബ് ആപ്ലിക്കേഷനുകൾ.

സൈറ്റിലെ മിക്കവാറും എല്ലാ ചോദ്യങ്ങളും "സഹായം, ഇത് പ്രവർത്തിക്കുന്നില്ല, അത് ആരംഭിക്കില്ല ..." എന്ന് തുടങ്ങുന്നു. എല്ലാ ഉത്തരങ്ങളും സൂചനകളിലേക്കും ഉപദേശങ്ങളിലേക്കും ചുരുങ്ങുന്നു, പക്ഷേ എങ്ങനെ, എവിടെയാണ് പിശകുകൾ കണ്ടെത്തേണ്ടത് അല്ലെങ്കിൽ ലോഗുകൾ ഉപയോഗിക്കുന്നതിനെ കുറിച്ച് ഒരു ലേഖനം എഴുതാൻ എനിക്ക് തോന്നിയില്ല എന്ന് എനിക്കറിയില്ല. അതിനാൽ, ഞങ്ങൾ വിടവ് നികത്തുകയും ഈ ലേഖനം വായിക്കാൻ എല്ലാവരേയും ഉപദേശിക്കുകയും ചെയ്യുന്നു.

ലോഗ് (രേഖകൾ) - (ഇംഗ്ലീഷ്) ലോഗ്, നിങ്ങൾ മുമ്പ് ഫയലുകൾ കണ്ടിട്ടുണ്ടാകാം *.ലോഗ്) ഒരു ചട്ടം പോലെ, കാലക്രമത്തിൽ ഇവന്റുകളുടെ ഒരു ലിസ്റ്റ്, ഒരു ഇവന്റ് ലോഗ്, ഒരു ഡയറി, ഒരു റെക്കോർഡ്, ഒരു പ്രോട്ടോക്കോൾ മുതലായവ ഉള്ള ഒരു ടെക്സ്റ്റ് ഫയൽ. വിവിധ പ്രോഗ്രാമുകൾ, സേവനങ്ങൾ, ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ എന്നിവ ഉപയോഗിച്ചാണ് ലോഗുകൾ സൃഷ്ടിക്കുന്നത്. ഓരോ പ്രോഗ്രാമിനും അതിന്റേതായ ലോഗ് (ടെക്സ്റ്റ് ഫയൽ) ഉണ്ടായിരിക്കും.

ഒരു വെബ്‌സൈറ്റ് വികസിപ്പിക്കുമ്പോൾ, സൃഷ്‌ടിച്ച ലോഗുകൾ ഒരു വെബ് ഡെവലപ്പർക്ക് വിലപ്പെട്ടതായിരിക്കും:
1. ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ലെവൽ ലോഗുകൾ:
- എന്റെ കമ്പ്യൂട്ടർ - നിയന്ത്രണ പാനൽ - അഡ്മിനിസ്ട്രേറ്റീവ് ടൂളുകൾ - ഇവന്റ് വ്യൂവർ
- എന്റെ കമ്പ്യൂട്ടർ - പ്രവർത്തിപ്പിക്കുക - "eventvwr.msc"


വിൻഡോസ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിലെ എല്ലാ ഇവന്റുകളുടെയും റെക്കോർഡുകൾ ഇതിൽ ഉൾപ്പെടുന്നു. ഇവിടെ ഉൾപ്പെടെ, ടാബുകളിൽ:
- ഇഷ്ടാനുസൃത കാഴ്ചകൾ / ഭരണപരമായ ഇവന്റുകൾ
- വിൻഡോസ് ലോഗുകൾ/സിസ്റ്റം

നിങ്ങൾക്ക് അപ്പാച്ചെ സേവനവുമായി ബന്ധപ്പെട്ട ലോഗുകളും (അപ്പാച്ചെ വെബ് സെർവർ ഒരു സേവനമായി പ്രവർത്തിക്കുകയാണെങ്കിൽ) മറ്റ് പിശകുകളും കണ്ടെത്താനാകും, ഉദാഹരണത്തിന്, php വിപുലീകരണങ്ങൾ. വലിയതോതിൽ, എല്ലാ വിൻഡോസ് പിശകുകളും ഇവിടെ നൽകിയിട്ടുണ്ട്. അപ്പാച്ചെ, ഒരു സേവനമെന്ന നിലയിൽ, വിൻഡോസിന്റെ ഭാഗമായി കണക്കാക്കപ്പെടുന്നു, അതിനാൽ അപ്പാച്ചെ സേവനം ആരംഭിക്കുമ്പോൾ എന്തെങ്കിലും പിശക് സംഭവിക്കുകയാണെങ്കിൽ, ഈ പിശകിന്റെ വിശദീകരണം നിങ്ങൾ ഇവിടെ നോക്കേണ്ടതുണ്ട്. അടുത്തതായി, ലോഗുകളിലെ പിശകിന്റെ ഡീകോഡിംഗ് യഥാർത്ഥ പ്രശ്നം എന്താണെന്ന് മനസിലാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നില്ലെങ്കിൽ, ലോഗിന്റെ പ്രധാന ഭാഗങ്ങൾ Google-ലേക്ക് പകർത്തി സമാനമായ പ്രശ്നങ്ങൾക്കായി നോക്കുക. മിക്കവാറും, നിങ്ങളെ സഹായിക്കുന്ന ഉത്തരങ്ങൾ നിങ്ങൾ കണ്ടെത്തും. ഏതെങ്കിലും ഗെയിം, പ്രോഗ്രാം, സേവനം എന്നിവ ആരംഭിക്കുമ്പോൾ, ഒരു പിശക് സംഭവിക്കുമ്പോൾ, പിശകിന്റെ കൂടുതൽ വിശദമായ വിവരണത്തോടെ ലോഗുകളിൽ ഒരു പുതിയ എൻട്രി ദൃശ്യമാകും. ഇതിനെ അടിസ്ഥാനമാക്കി, നിങ്ങൾക്ക് എല്ലായ്പ്പോഴും ഇന്റർനെറ്റിൽ ഉത്തരം കണ്ടെത്താൻ കഴിയും.

2. അപ്പാച്ചെ ലെവൽ ലോഗുകൾ:
വിൻഡോസ് ലോഗുകൾക്ക് പുറമേ, അപ്പാച്ചെ തന്നെ ഒരു ടെക്സ്റ്റ് ഫയലിന്റെ രൂപത്തിൽ സ്വന്തം ലോഗ് സൃഷ്ടിക്കുന്നു. ഫയലിൽ അപ്പാച്ചെ വെബ് സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുകയും കോൺഫിഗർ ചെയ്യുകയും ചെയ്യുമ്പോൾ httpd.confഒരു ലൈൻ ഉണ്ട്: ErrorLog "C:/apache/error.log" ഇവിടെ, "C:/apache/error.log" എന്നത് അപ്പാച്ചെ വെബ് സെർവർ ലോഗ് ഫയലിലേക്കുള്ള പാതയാണ്. നിങ്ങളുടെ പാത സജ്ജമാക്കുക അല്ലെങ്കിൽ ഓർക്കുക, അപ്പാച്ചെ ആരംഭിക്കുമ്പോൾ പിശകുകൾ സംഭവിക്കുകയാണെങ്കിൽ, നിങ്ങൾ ഈ ഫയൽ തുറന്ന് ഏറ്റവും പുതിയ എൻട്രികൾ കണ്ടെത്തേണ്ടതുണ്ട്, അത് പിശകുകളുടെ കാരണങ്ങളെ പ്രതിഫലിപ്പിക്കും. കൂടാതെ, ഓരോ വെർച്വൽ ഹോസ്റ്റിനും വെവ്വേറെ ലോഗുകൾ സൃഷ്ടിക്കാൻ അപ്പാച്ചെ വെബ് സെർവർ നിങ്ങളെ അനുവദിക്കുന്നു. ഒരു ഫയലിലെ വെർച്വൽ ഹോസ്റ്റുകളുടെ ഉദാഹരണം conf/extra/httpd-vhosts.conf:


DocumentRoot "C:/apache/symfony/www/web"
സെർവർ നെയിം സിംഫണി
സെർവർ ഏലിയാസ് www.symfony
പിശക്ലോഗ് "C:/apache/symfony/error.log"
CustomLog "C:/apache/symfony/access.log" പൊതുവായതാണ്


DocumentRoot "C:/apache/phpmyadmin"
സെർവർ പേര് phpmyadmin
സെർവർ ഏലിയാസ് www.phpmyadmin
പിശക്ലോഗ് "C:/apache/phpmyadmin/error.log"
CustomLog "C:/apache/phpmyadmin/access.log" പൊതുവായതാണ്

3. php ലെവൽ ലോഗുകൾ:
ഫയലിൽ php കോൺഫിഗറേഷൻ സജ്ജമാക്കുമ്പോൾ php.ini, ലോഗുകളുടെ പ്രദർശനം ക്രമീകരിക്കുന്നതിന്, ഞങ്ങൾ ഇനിപ്പറയുന്ന വരികൾ കണ്ടെത്തുന്നു:

error_reporting = E_ALL & ˜E_NOTICE &˜E_STRICT //ലോഗ് ചെയ്ത പ്രദർശിപ്പിച്ച പിശകുകളുടെ തരങ്ങളും തരങ്ങളും
log_errors = ഓൺ //ലോഗിംഗ് ഓണാക്കുക
log_errors_max_len = 1024 //ലോഗ് ഫയലിന്റെ പരമാവധി വലിപ്പം നിർവ്വചിക്കുക (1024 ബൈറ്റുകൾ)
error_log = php_errors.log //ലോഗുകൾ സംരക്ഷിക്കപ്പെടുന്ന ഫയലിന്റെ പേര് വ്യക്തമാക്കുക, ഈ ഫയലുകൾ നിങ്ങളുടെ വെർച്വൽ ഹോസ്റ്റിന്റെ റൂട്ടിൽ സൃഷ്ടിക്കപ്പെടും. ഓരോ ഹോസ്റ്റിനും ഒരു പ്രത്യേക ഫയൽ സൃഷ്ടിക്കും.

എല്ലാ PHP പിശകുകളും ഫയലിൽ രേഖപ്പെടുത്തും എന്നതിന് പുറമേ, error_log ഫംഗ്ഷൻ ഉപയോഗിച്ച് ഒരു PHP സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ നിങ്ങൾക്ക് ലോഗുകൾ സൃഷ്ടിക്കാനും കഴിയും. നിങ്ങൾ സജീവമായി ശ്രമിക്കുക ... പിടിക്കുക എന്നത് നിങ്ങളുടെ കോഡിൽ ഉപയോഗിക്കുകയാണെങ്കിൽ ഇത് ഉപയോഗപ്രദമാകും, ഈ സാഹചര്യത്തിൽ ഗുരുതരമായ പിശകുകളുടെ കാര്യത്തിൽ സ്ക്രിപ്റ്റുകൾ അവസാനിപ്പിക്കില്ല, കൂടാതെ എല്ലാ അപ്രതീക്ഷിത പിശകുകളും എല്ലായ്പ്പോഴും ലോഗുകളിൽ രേഖപ്പെടുത്തും.

ശ്രമിക്കുക (
$r = 5/0;
) പിടിക്കുക (ഒഴിവാക്കൽ $exc) (
error_log($exc->getMessage());
}

ഈ കോഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നതിന്റെ ഫലങ്ങളെ അടിസ്ഥാനമാക്കി, ലോഗ് ഫയൽ php_errors.logഇതിന് സമാനമായ ഒരു വരി ചേർക്കും:

PHP മുന്നറിയിപ്പ്: വരി 5-ൽ C:\apache\test\www\index.php-ൽ പൂജ്യം കൊണ്ട് വിഭജിക്കുക

അത്രയേയുള്ളൂ, സാധ്യമാകുന്നിടത്തെല്ലാം ലോഗുകൾ ഉപയോഗിക്കുക, കൂടാതെ കോഡിലെ പിശകുകളും തെറ്റായ ഡാറ്റ പ്രോസസ്സിംഗിന്റെ കാരണങ്ങളും നിങ്ങൾ വേഗത്തിൽ കണ്ടെത്തും.

483

PHP-ൽ ലോഗിൻ ചെയ്യുക എന്നതിനർത്ഥം നിങ്ങളുടെ വെബ് ആപ്ലിക്കേഷൻ/സൈറ്റ്/പിഎച്ച്പി സ്ക്രിപ്റ്റ് ഏത് തരത്തിലുള്ള പിശകുകളാണ് നിങ്ങൾക്ക് റിപ്പോർട്ട് ചെയ്യുന്നതെന്നും എങ്ങനെയെന്നും.

ഒരു ആപ്ലിക്കേഷനിൽ നിന്ന് പിശകുകൾ സ്വീകരിക്കുന്നതിന് 2 (3) പ്രധാന വഴികളുണ്ട്:

  1. ഈ പിശകുകൾ നേരിട്ട് സ്ക്രീനിൽ പ്രദർശിപ്പിക്കുന്നു
  2. ഈ പിശകുകൾ ഒരു പ്രത്യേക ലോഗ് ഫയലിലേക്ക് ലോഗ് ചെയ്യുന്നു
  3. അല്ലെങ്കിൽ ഒരേസമയം രണ്ട് ഓപ്ഷനുകളും: ഈ പിശകുകൾ സ്ക്രീനിൽ പ്രദർശിപ്പിക്കുകയും അവ ഒരു പ്രത്യേക ലോഗ് ഫയലിൽ രേഖപ്പെടുത്തുകയും ചെയ്യുന്നു

ചട്ടം പോലെ, വികസന സമയത്ത് (പ്രാദേശിക പരിതസ്ഥിതിയിൽ) എല്ലാ പിശകുകളും സ്ക്രീനിൽ നേരിട്ട് കാണിക്കുന്നു, അതിനാൽ അവ പിടിക്കാനും ശരിയാക്കാനും എളുപ്പവും വേഗവുമാണ്, പക്ഷേ ഒരു ഉൽ‌പാദന അന്തരീക്ഷത്തിൽ (ഉൽ‌പാദനത്തിൽ) പിശകുകളില്ല. എല്ലാം കാണിക്കുന്നു (ഉപയോക്താവിന് ഉപയോഗശൂന്യമായ വിവരങ്ങൾ ആയതിനാൽ) അവരെക്കുറിച്ചുള്ള എല്ലാ വിവരങ്ങളും ഒരു ലോഗ് ഫയലിൽ എഴുതിയിരിക്കുന്നു, അത് ഡെവലപ്പർ പതിവായി അവലോകനം ചെയ്യുന്നു.

പിശക് ലോഗിംഗിനുള്ള ക്രമീകരണങ്ങൾ

  1. പിശക്_റിപ്പോർട്ടിംഗ്- ഇതാണ് ഏറ്റവും പ്രധാനപ്പെട്ട പാരാമീറ്റർ. ലോഗ് ഫയലിൽ ഏത് തരത്തിലുള്ള പിശക് സന്ദേശങ്ങൾ പ്രദർശിപ്പിക്കും/എഴുതപ്പെടും എന്നതിന് ഇത് ഉത്തരവാദിയാണ്. ഇവിടെ 2 ഓപ്ഷനുകൾ മാത്രമേ ഉപയോഗിക്കാനാവൂ എന്ന് ഞാൻ വിശ്വസിക്കുന്നു:
    • -1 (അല്ലെങ്കിൽ E_ALL) - എല്ലാത്തരം പിശകുകളും റിപ്പോർട്ട് ചെയ്യപ്പെടുന്നു;
    • 0 - ഒരു തരത്തിലുള്ള പിശകുകളും റിപ്പോർട്ട് ചെയ്തിട്ടില്ല

    -1 (അല്ലെങ്കിൽ E_ALL) മാത്രം ഉപയോഗിക്കാൻ ഞാൻ ശുപാർശ ചെയ്യുന്നു.
    കാരണം ആപ്ലിക്കേഷനിൽ തത്ത്വത്തിൽ പിശകുകളൊന്നും ഉണ്ടാകരുത്. php.ini-യിലെ കോൺഫിഗറേഷൻ ഫയലിലൂടെയോ അല്ലെങ്കിൽ ഫംഗ്‌ഷനിലേക്ക് വിളിച്ച് നേരിട്ട് php സ്‌ക്രിപ്‌റ്റിലൂടെയോ ഈ ഓപ്ഷൻ സജ്ജമാക്കാവുന്നതാണ്. പിശക്_റിപ്പോർട്ടിംഗ്:

    പിശക്_റിപ്പോർട്ടിംഗ്(-1); പിശക്_റിപ്പോർട്ടിംഗ് (E_ALL);

    വഴിയിൽ, PHP ഭാഷയിൽ ഒരു ഫംഗ്‌ഷനായി ലഭ്യമായ ഒരേയൊരു ഓപ്ഷൻ ഇതാണ്. php.ini കോൺഫിഗറേഷൻ ഫയൽ എഡിറ്റ് ചെയ്‌ത് അല്ലെങ്കിൽ ഫംഗ്‌ഷനിലേക്ക് വിളിച്ച് മറ്റെല്ലാ ഓപ്‌ഷനുകളും പ്രത്യേകമായി സജ്ജമാക്കാൻ കഴിയും. ini_set()അതിലേക്ക് കടന്നുപോകുന്നത്, യഥാക്രമം, ആവശ്യമായ പാരാമീറ്ററും അതിനുള്ള മൂല്യവും.

  2. ഡിസ്പ്ലേ_എററുകൾ— പിശകുകൾ യഥാർത്ഥത്തിൽ സംഭവിച്ചതിന് ശേഷം സ്ക്രീനിൽ നേരിട്ട് പ്രദർശിപ്പിക്കുന്നതിന് ഈ പരാമീറ്റർ ഉത്തരവാദിയാണ്. ഈ പരാമീറ്ററിന് 0 അല്ലെങ്കിൽ 1 അല്ലെങ്കിൽ ഓൺ / ഓഫ് മൂല്യം ഉണ്ടായിരിക്കാം. ആ. ഒന്നുകിൽ സ്ക്രീനിൽ പിശകുകൾ കാണിക്കുക അല്ലെങ്കിൽ ഇല്ല.
  3. display_startup_errors- PHP സമാരംഭിച്ചതിന് ശേഷം സംഭവിച്ച പിശകുകൾ പ്രദർശിപ്പിക്കുന്നതിന് ഈ ഓപ്ഷൻ ഉത്തരവാദിയാണ്. ഉദാഹരണത്തിന്, കോൺഫിഗറേഷൻ ഫയലിൽ ഒരു വാക്യഘടന പിശക് ഉണ്ടെങ്കിൽ, അതിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ കാണിക്കും. ഈ പരാമീറ്ററിന് 0 അല്ലെങ്കിൽ 1 അല്ലെങ്കിൽ ഓൺ / ഓഫ് മൂല്യം ഉണ്ടായിരിക്കാം.
  4. ലോഗ്_പിശകുകൾ- ഒരു ലോഗ് ഫയലിലേക്ക് പിശക് സന്ദേശങ്ങൾ എഴുതുന്നതിന് ഈ നിർദ്ദേശം ഉത്തരവാദിയാണ്. ഈ പരാമീറ്ററിന് 0 അല്ലെങ്കിൽ 1 അല്ലെങ്കിൽ ഓൺ / ഓഫ് മൂല്യം ഉണ്ടായിരിക്കാം. ആ. ലോഗ് പിശകുകൾ അല്ലെങ്കിൽ ഇല്ല.
  5. പിശക്_ലോഗ്— സംഭവിക്കുന്ന എല്ലാ ആപ്ലിക്കേഷൻ പിശകുകളും രേഖപ്പെടുത്തുന്ന ഫയലിലേക്കുള്ള (ലോഗ് ഫയൽ) പാതയ്ക്ക് ഈ ക്രമീകരണം ഉത്തരവാദിയാണ്
  6. html_errors— ആപ്ലിക്കേഷൻ പിശകുകൾ പ്രദർശിപ്പിക്കുന്നതിനുള്ള ഫോർമാറ്റിനും ഇതേ ഓപ്ഷൻ ഉത്തരവാദിയാണ്. 1 അല്ലെങ്കിൽ ഓൺ ആയി സജ്ജീകരിക്കുകയാണെങ്കിൽ, പിശക് HTML ഉപയോഗിച്ച് കാണിക്കും, അതായത്. പിശകിന്റെ ഉത്ഭവത്തിന്റെ ഒരു സൂചന ഉണ്ടാകും, എല്ലാം തികച്ചും വിജ്ഞാനപ്രദവും വർണ്ണാഭമായതുമായിരിക്കും. ഈ ക്രമീകരണം 0 അല്ലെങ്കിൽ ഓഫ് ആയി സജ്ജീകരിക്കുകയാണെങ്കിൽ, പിശകുകൾ ഒരു ചെറിയ വരിയിൽ പ്ലെയിൻ ടെക്സ്റ്റിൽ പ്രദർശിപ്പിക്കും.

1. സ്ക്രീനിൽ പിശകുകൾ പ്രദർശിപ്പിക്കുന്നതിനുള്ള ക്രമീകരണങ്ങൾ




ini_set("html_errors", 1);
ini_set("log_errors", 0);

2. ഒരു ലോഗ് ഫയലിൽ പിശകുകൾ രേഖപ്പെടുത്തുന്നതിനുള്ള ക്രമീകരണങ്ങൾ

പിശക്_റിപ്പോർട്ടിംഗ്(-1); // ini_set("error_reporting", -1);
ini_set("display_errors", 0);
ini_set("display_startup_errors", 0);
ini_set("log_errors", 1);

3. ഒരേസമയം പിശകുകൾ പ്രദർശിപ്പിക്കുന്നതിനും അവ ഒരു ലോഗ് ഫയലിൽ രേഖപ്പെടുത്തുന്നതിനുമുള്ള ക്രമീകരണങ്ങൾ

പിശക്_റിപ്പോർട്ടിംഗ്(-1); // ini_set("error_reporting", -1);
ini_set("display_errors", 1);
ini_set("display_startup_errors", 1);
ini_set("log_errors", 1);
ini_set("html_errors", 1);
ini_set("error_log", "/var/log/php/error.log");

കൂടാതെ, ഈ ഓപ്‌ഷനുകൾ php.ini കോൺഫിഗറേഷൻ ഫയലിലോ നിങ്ങളുടെ വെർച്വൽ ഹോസ്റ്റ് ഫയലിലോ സജ്ജമാക്കാൻ കഴിയും.

നിങ്ങളുടെ വെബ്‌സൈറ്റിലേക്കുള്ള ട്രാഫിക് ട്രാക്കുചെയ്യുന്നതിനുള്ള സേവനങ്ങൾ നൽകുന്ന ധാരാളം സേവനങ്ങൾ ഇന്റർനെറ്റിൽ ഉണ്ട്. ഈ സേവനങ്ങൾ ഫീസും സൗജന്യവും നൽകുന്നു. ഉദാഹരണത്തിന്, നമുക്ക് ലൈവ്ഇന്റർനെറ്റ് ഉദ്ധരിക്കാം. ഈ സേവനം ഇന്റർനെറ്റിൽ വളരെ വ്യാപകമാണ്, മിക്കവാറും എല്ലാ സൈറ്റുകളും അതിന്റെ സേവനങ്ങൾ ഉപയോഗിക്കുന്നു. ഉടമയുടെ സൈറ്റിലേക്കുള്ള സന്ദർശനങ്ങളെക്കുറിച്ചുള്ള വിശദമായ സ്ഥിതിവിവരക്കണക്കുകൾ ഉണ്ട്.

ഒരു സംശയവുമില്ല! വെബ്‌സൈറ്റ് ട്രാഫിക് റെക്കോർഡ് ചെയ്യുന്നതിനും ഉപയോക്തൃ പെരുമാറ്റം കൂടുതൽ പഠിക്കുന്നതിനും ഈ സേവനങ്ങൾ ഒഴിച്ചുകൂടാനാവാത്തതാണ്. എന്നാൽ ഈ ലേഖനത്തിൽ, സെർവറിലെ സന്ദർശക സന്ദർശനങ്ങളുടെ ഒരു ലോഗ് ഫയൽ എങ്ങനെ നിർമ്മിക്കാമെന്ന് ഞാൻ നിങ്ങളോട് പറയാൻ ആഗ്രഹിക്കുന്നു.

ലോഗ് ഫയൽ സന്ദർശിക്കുക

സന്ദർശകർ നിങ്ങളുടെ വെബ്‌സൈറ്റിന്റെ സന്ദർശനങ്ങളും കാഴ്ചകളും റെക്കോർഡുചെയ്യുന്നതിന് ഈ ലോഗ് ഫയൽ വളരെ ഉപയോഗപ്രദമാകും. ഒരു ലോഗ് ഫയൽ സൃഷ്ടിക്കാൻ, PHP-യിൽ എഴുതിയ ഒരു സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുന്നു. സ്ക്രിപ്റ്റ് മനസ്സിലാക്കാനും സൈറ്റിൽ ഇൻസ്റ്റാൾ ചെയ്യാനും വളരെ എളുപ്പമാണ്.

ഒരു ലോഗ് ഫയൽ സൃഷ്ടിക്കാൻ PHP സ്ക്രിപ്റ്റ്

സൈറ്റിലേക്കുള്ള പ്രവേശനത്തിന്റെ കൃത്യമായ സമയം സ്ക്രിപ്റ്റ് രേഖപ്പെടുത്തുന്നു, സന്ദർശകന്റെ ബ്രൗസർ നിർണ്ണയിക്കുന്നു, ഏറ്റവും പ്രധാനമായി, സന്ദർശകൻ എവിടെ നിന്നാണ് വന്നതെന്ന് നിർണ്ണയിക്കുന്നു. സൈറ്റിന്റെ ഒരു പ്രത്യേക പേജ് പ്രദർശിപ്പിക്കുമ്പോഴെല്ലാം ഒരു ലോഗ് ഫയൽ രേഖപ്പെടുത്തുന്നു. അതായത്, ഒരു പ്രത്യേക ബ്രൗസർ ഉപയോഗിച്ച് ഒരു സന്ദർശകൻ ഒരു നിർദ്ദിഷ്ട ഐപിയിലും സമയത്തും സൈറ്റിന്റെ നിർദ്ദിഷ്ട പേജുകൾ കണ്ടതായി സൈറ്റ് ഉടമയ്ക്ക് ലോഗ് ഫയലിൽ കാണാൻ കഴിയും.

ഒരു ലോഗ് ഫയലിലേക്ക് ഡാറ്റ എഴുതുന്നതിനുള്ള സ്ക്രിപ്റ്റിന്റെ ലിസ്റ്റിംഗ്

സ്ക്രിപ്റ്റ് ഇൻസ്റ്റാൾ ചെയ്യുന്നു

സ്ക്രിപ്റ്റ് ഒരു ടെംപ്ലേറ്റിൽ അല്ലെങ്കിൽ ഒരു ബാഹ്യ ഫയലിൽ സംരക്ഷിക്കുക user.php. പേജിലേക്ക് സ്ക്രിപ്റ്റ് ചേർക്കുന്നതിന്, ഇനിപ്പറയുന്ന കോഡ് ഉപയോഗിക്കുക.

ഗുരുതരമായ വെബ്‌സൈറ്റുകളിൽ, ഏറ്റവും അപ്രതീക്ഷിതമായ സ്ഥലങ്ങളിൽ ബ്രൗസറിൽ ഉപയോക്താവിന് ദൃശ്യമാകുന്ന പിശകുകൾ കാണുന്നത് വിചിത്രമാണ്. എന്തുകൊണ്ടാണ് അവർ പ്രത്യക്ഷപ്പെടുന്നത് എന്നത് ഒരു പ്രത്യേക സംഭാഷണമാണ്. എന്നാൽ എന്തുകൊണ്ടാണ് അവ പ്രദർശിപ്പിക്കുന്നത്? എല്ലാത്തിനുമുപരി, പിശക് വാചകം ഡീബഗ്ഗിംഗിനുള്ള വിവരമാണ്, അത് ക്ലയന്റിനല്ല, ഡെവലപ്പർക്ക് വേണ്ടിയുള്ളതാണ്.

കൂടാതെ, ഈ കുത്തക വിവരങ്ങളാണ് സാധാരണയായി ദുഷ്ട ഹാക്കർമാരെ സൈറ്റ് തകർക്കാൻ സഹായിക്കുന്നത്. ഒരു പിശക് ഉണ്ടാകുമ്പോൾ ഒരു ചോദ്യം പ്രദർശിപ്പിക്കുന്നതിനുള്ള ഓപ്ഷനാണ് ഒരു മികച്ച ഉദാഹരണം: "നിങ്ങൾക്ക് WHERE id= എന്നതിന് സമീപമുള്ള ചോദ്യത്തിൽ ഒരു പിശക് ഉണ്ട്" ... വളരെ നന്ദി. "WHERE id=..." എന്നതിന് ശേഷം ഞങ്ങൾ "0 അല്ലെങ്കിൽ 1>0" എന്ന സ്‌ട്രിംഗ് മാറ്റിസ്ഥാപിക്കുന്നു, തുടർന്ന് മുഴുവൻ പട്ടികയിലും അന്വേഷണം എക്‌സിക്യൂട്ട് ചെയ്യുന്നു. അഭ്യർത്ഥന ഇല്ലാതാക്കാനുള്ളതാണെങ്കിൽ, പിന്നെ ... നിങ്ങൾക്കറിയാമോ, അത് രസകരമാണ് =). അതുകൊണ്ടാണ് ഉദ്ധരണികളിലെ ഉദ്ധരണികളിൽ ഞാൻ എപ്പോഴും വേരിയബിളുകൾ ഉൾപ്പെടുത്തുന്നത്. ഈ സാഹചര്യത്തിൽ...

പക്ഷേ ഞാൻ അകന്നുപോയി. ഇന്ന് നമ്മൾ സംസാരിക്കുന്നത് അതല്ല. എല്ലാ സന്ദേശങ്ങളും വെബ്‌മാസ്റ്ററിലേക്ക് ഒരു കീപ്‌സേക്ക് ആയി സംരക്ഷിക്കുമ്പോൾ, ക്ലയന്റിലേക്ക് പിശകുകൾ പ്രദർശിപ്പിക്കുന്നത് എങ്ങനെ ഒഴിവാക്കാം എന്നതിനെക്കുറിച്ച് ഇന്ന് നമ്മൾ സംസാരിക്കും.

PHP-യിലെ പിശകുകളുടെ തരങ്ങളെക്കുറിച്ചുള്ള ഒരു ഹ്രസ്വ അവലോകനത്തോടെ നമുക്ക് ആരംഭിക്കാം.

പട്ടിക 1. PHP4-ലെ പിശകുകളുടെ വിവരണങ്ങൾ(യഥാർത്ഥ ലിസ്റ്റ്)
സംഖ്യാശാസ്ത്രം
അർത്ഥം
സ്ഥിരമായ വിവരണം പിടിക്കാവുന്നത്/അല്ല
1 E_ERROR മാരകമായ പിശകുകൾ. ഉദാഹരണത്തിന്, മെമ്മറി ആക്സസ് ചെയ്യുമ്പോൾ ഒരു പിശക്. തിരക്കഥയുടെ നിർവ്വഹണം തടസ്സപ്പെട്ടു. ഇല്ല
2 E_WARNING മുന്നറിയിപ്പുകൾ (മാരകമായ പിശകുകളല്ല). സ്ക്രിപ്റ്റ് എക്സിക്യൂഷൻ തടസ്സപ്പെട്ടിട്ടില്ല. അതെ
4 E_PARSE വാക്യഘടന പാഴ്‌സിംഗ് സമയത്ത് പിശകുകൾ. പാഴ്‌സർ സൃഷ്ടിച്ചത്. ഇല്ല
8 E_NOTICE കുറിപ്പുകൾ (മുന്നറിയിപ്പുകളേക്കാൾ ഗുരുതരമായ പിശകുകൾ). കൂടുതൽ ഗുരുതരമായ പിശകിന് കാരണമായേക്കാവുന്ന ഒരു സാഹചര്യം സൂചിപ്പിക്കുക, എന്നാൽ സാധാരണ സ്ക്രിപ്റ്റ് പ്രവർത്തനത്തിനിടയിലും സംഭവിക്കാം. അതെ
16 E_CORE_ERROR PHP ഡൗൺലോഡ് ചെയ്യുമ്പോൾ പിശകുകൾ. PHP കേർണൽ സൃഷ്ടിച്ച E_ERROR ന് സമാനമാണ്. ഇല്ല
32 E_CORE_WARNING PHP ലോഡിംഗ് സമയത്തെ മുന്നറിയിപ്പുകൾ, PHP കേർണൽ സൃഷ്ടിച്ച E_WARNING-ന് സമാനമാണ്. ഇല്ല
64 E_COMPILE_ERROR കോഡ് സമാഹരിക്കുന്ന സമയത്ത് മാരകമായ പിശകുകൾ. Zend എഞ്ചിൻ സൃഷ്ടിച്ച E_ERROR-ന്റെ അനലോഗ്. ഇല്ല
128 E_COMPILE_WARNING കോഡ് സമാഹരിക്കുന്ന സമയത്തെ മുന്നറിയിപ്പുകൾ. Zend എഞ്ചിൻ സൃഷ്ടിച്ച E_WARNING-ന്റെ അനലോഗ്. ഇല്ല
256 E_USER_ERROR ഉപയോക്തൃ പിശക്. അതെ
512 E_USER_WARNING ഉപയോക്തൃ മുന്നറിയിപ്പ്. അതെ
1024 E_USER_NOTICE ഉപയോക്തൃ കുറിപ്പ് അതെ

ഞങ്ങൾക്ക് തടസ്സപ്പെടുത്താൻ കഴിയുന്ന പിശകുകളിൽ ഞങ്ങൾക്ക് താൽപ്പര്യമുണ്ട്. ഇവ ഉൾപ്പെടുന്നു: E_WARNING, E_NOTICE, E_USER_*. പി‌എച്ച്‌പി കേർണൽ ലോഡിംഗ് പൂർത്തിയാകുന്നതിന് മുമ്പ് സംഭവിക്കുന്നതിനാലോ അല്ലെങ്കിൽ പി‌എച്ച്‌പി കോഡ് പാഴ്‌സ് ചെയ്യുന്നതിന്റെയും കംപൈൽ ചെയ്യുന്നതിന്റെയും ഘട്ടത്തിൽ അവ സംഭവിക്കുന്നതിനാലോ മറ്റ് തരത്തിലുള്ള പിശകുകൾ തടയാൻ കഴിയില്ല, അതിനാൽ അവയുടെ ഔട്ട്‌പുട്ട് ഓഫാക്കേണ്ടതുണ്ട്:

ini_set ("display_errors",0);

എന്നാൽ ഞങ്ങളുടെ സ്ക്രിപ്റ്റുകൾ അടിസ്ഥാന വാക്യഘടന പിശകുകൾ ഉൾക്കൊള്ളാത്ത വിധം ഡീബഗ്ഗ് ചെയ്തിട്ടുണ്ടെന്ന് ഞാൻ കരുതുന്നു, അതിനാൽ നമുക്ക് ഒന്നും നഷ്‌ടപ്പെടരുത്.

PHP-യിലെ സ്ഥിരസ്ഥിതി പിശക് നിരക്ക് E_ALL & ~E_NOTICE ആണ് (അല്ലെങ്കിൽ സംഖ്യാ രൂപത്തിൽ 2039), അതായത് ഞങ്ങൾ അഭിപ്രായങ്ങൾ അവഗണിക്കുകയും മറ്റെല്ലാ പിശകുകളും റിപ്പോർട്ട് ചെയ്യുകയും ചെയ്യുന്നു.

അതിനാൽ, പിശക് ഔട്ട്പുട്ട് ലെവൽ E_ALL-ലേക്ക് മാറ്റാം:

പിശക്_റിപ്പോർട്ടിംഗ് (E_ALL);

ഇനി നമുക്ക് എറർ ഹാൻഡ്‌ലറിനെ പുനർ നിർവചിക്കാം, പകരം നമ്മുടെ ഫംഗ്‌ഷൻ മാറ്റിസ്ഥാപിക്കാം, അത് ഇപ്പോൾ പിശക് കൈകാര്യം ചെയ്യൽ കൈകാര്യം ചെയ്യും:

set_error_handler("user_log");

നമുക്ക് ഈ ഫംഗ്ഷനെ അടുത്ത് നോക്കാം. ഇത് 5 പാരാമീറ്ററുകൾ കടന്നു:

  • പിശക് കോഡ്
  • പിശക് വാചകം
  • പിശക് സംഭവിച്ച ഫയലിന്റെ പേര്
  • ഫയലിലെ വരി
  • വേരിയബിൾ അറേ

ഒന്നും തിരികെ നൽകുന്നതിന് ഈ പ്രവർത്തനം ആവശ്യമില്ല. ഞങ്ങൾ പിന്നീട് പിശക് ലോഗ് കാണാൻ പോകുന്നതിനാൽ, ലോഗ് റെക്കോർഡ് ചെയ്യേണ്ടതുണ്ട്, ഉദാഹരണത്തിന്, ഒരു ഫയലിൽ, അതുവഴി പിന്നീട് പ്രവർത്തിക്കുന്നത് ഞങ്ങൾക്ക് സൗകര്യപ്രദമായിരിക്കും.

=(LOG_FILE_MAXSIZE*1024)) ( //ക്രമീകരണങ്ങൾ പരിശോധിക്കുക, log_rotate സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, //എന്നിട്ട് പഴയ ഫയലുകൾ ഒന്ന് താഴേക്ക് "ഷിഫ്റ്റ്" ചെയ്ത് ഒരു ശൂന്യമായ ലോഗ് സൃഷ്‌ടിക്കുക //ഇല്ലെങ്കിൽ, പഴയ ലോഗിന് പകരം മായ്‌ക്കുകയും എഴുതുകയും ചെയ്യുക ( LOG_ROTATE===true ) ( $i=1; //ഡയറക്‌ടറിയിൽ പഴയ ലോഗുകൾ എണ്ണുമ്പോൾ (is_file(LOG_FILE_NAME.".".$i)) ($i++; ) $i--; //അവയിൽ ഓരോന്നിനും ($i>0) ഞങ്ങൾ സംഖ്യ 1 വർദ്ധിപ്പിക്കുമ്പോൾ (LOG_FILE_NAME"..".$i,LOG_FILE_NAME. ".".(1+$i--)); ) പേരുമാറ്റുക (LOG_FILE_NAME,LOG_FILE_NAME) .".1"); സ്‌പർശിക്കുക (LOG_FILE_NAME); ) elseif(is_file(LOG_FILE_NAME)) ( //മുകളിൽ നിന്ന് ലോഗുകൾ എഴുതുകയാണെങ്കിൽ, ഞങ്ങൾ ഇല്ലാതാക്കുകയും //ഒഴിഞ്ഞ ഫയൽ വീണ്ടും അൺലിങ്ക് ചെയ്യുക(LOG_FILE_NAME); ടച്ച്(LOG_FILE_NAME) ; ) ) /* ഇത്തരമൊരു ഫയൽ നിലവിലില്ലെങ്കിലോ എന്ന് പരിശോധിക്കുക - അത് നിലവിലുണ്ടെങ്കിൽ നമുക്ക് അത് സൃഷ്ടിക്കാമോ - അതിലേക്ക് നമുക്ക് എഴുതാമോ */ if(!is_file(LOG_FILE_NAME)) ( എങ്കിൽ (!ടച്ച്(LOG_FILE_NAME)) ( "കഴിയും" തിരികെ നൽകുക \"t create log file"; ) ) elseif( !is_writable(LOG_FILE_NAME)) ( "ലോഗ് ഫയലിലേക്ക് എഴുതാൻ കഴിയില്ല" എന്ന് തിരികെ നൽകുക; ) //ലോഗ് ഫയൽ എഴുതാൻ നമ്മൾ ഉപയോഗിക്കുന്ന ഫംഗ്‌ഷൻ ശ്രദ്ധിക്കുക. പിശക്_ലോഗ് ($err_str, 3, LOG_FILE_NAME); ?>

തീർച്ചയായും, അത്തരം ആവശ്യങ്ങൾക്കായി കൂടുതൽ ലോജിക്കൽ സ്റ്റോറേജ് ഉപയോഗിക്കാൻ കഴിയും - ഡാറ്റാബേസ്, പക്ഷേ പിശകുകൾ, മിക്കവാറും, ഡാറ്റാബേസുമായി പ്രവർത്തിക്കുമ്പോൾ കൃത്യമായി ഉണ്ടാകുന്നു, അതിനാൽ ഞാൻ അതിൽ ആശ്രയിക്കില്ല.

യഥാർത്ഥത്തിൽ, അത്രമാത്രം. ബാക്കിയുള്ളവ, നിങ്ങൾക്ക് ബുദ്ധിമുട്ടായിരിക്കില്ലെന്ന് ഞാൻ കരുതുന്നു, പ്രത്യേകിച്ചും നിങ്ങൾ ഫയൽ (); & പൊട്ടിത്തെറിക്കുക(); . അങ്ങനെയാണെങ്കിൽ, നിങ്ങൾക്ക് [ഈ കോഡ്] ഉപയോഗിക്കാം.

"ഈ സാഹചര്യത്തിൽ ഉപയോഗിക്കുന്നതിന് യുക്തിസഹമായി തോന്നുന്ന CSV എന്തുകൊണ്ട് ഞാൻ ഉപയോഗിച്ചില്ല?", ഞാൻ ഉത്തരം നൽകുന്നു: പിശക് സന്ദേശങ്ങളിൽ അജ്ഞാതമായ സേവന പ്രതീകങ്ങൾ (കോമകളും അർദ്ധവിരാമങ്ങളും) അടങ്ങിയിരിക്കാം, ഇത് CSV പാഴ്സിംഗിനെ സങ്കീർണ്ണമാക്കും. ഞാൻ Excel-ൽ ലോഗ് കാണാൻ പോകുന്നില്ല.

ഈ വിഷയത്തെക്കുറിച്ചുള്ള മറ്റ് ചിന്തകൾ:

  • gz ലോഗ് കാലഹരണപ്പെടുമ്പോൾ, ഫയൽ ഐപി ചെയ്ത് ഒരു ആർക്കൈവിൽ ഇടുക;
  • അതേ, എന്നാൽ പോസ്റ്റ് ഓഫീസിലേക്ക് അയച്ച ഒരു പാഴ്സലിനൊപ്പം;
  • ഗുരുതരമായ പിശകുകൾ സംഭവിക്കുകയാണെങ്കിൽ, ഒരു ഇമെയിൽ അയയ്‌ക്കുക (ഫംഗ്‌ഷനുള്ള മാനുവലിൽ നിന്നുള്ള ഉദാഹരണം കാണുക