adiju Tue Mar 5 05:00:52 2002 EDT
Added files:
/phpdoc/ro/functions errorfunc.xml
Log:
First romanian version of errorfunc.xml. Translated by Adrian Ciutureanu.
Index: phpdoc/ro/functions/errorfunc.xml
+++ phpdoc/ro/functions/errorfunc.xml
<?xml version="1.0" encoding="iso-8859-2"?>
<!-- $Revision: 1.1 $ -->
<reference id="ref.errorfunc">
<title>Erori - gestiune �i �nregistrare</title>
<titleabbrev>Erorile �i �nregistrarea</titleabbrev>
<partintro>
<para>
Aceste func�ii se ocup� cu tratarea �i �nregistrarea erorilor. Ele permit definirea
propriilor reguli pentru tratarea erorilor, precum �i modificarea modului �n
care
erorile pot fi �nregistrate. Ve�i putea adapta �i �mbun�t��i modul �n care
erorile sunt
raportate �i �nregistrate, pentru satisfacerea propriilor nevoi.
</para>
<para>
Cu func�iile de �nregistrare pute�i trimite mesaje la alte ma�ini, la o adresa de
email
(sau la un sistem email pe pager!), la sisteme jurnal etc. �n acest fel, pute�i
�nregistra �i monitoriza cele mai importante p�r�i ale aplica�iilor �i ale
paginilor web.
</para>
<para>
Func�iile pentru raportarea erorilor v� permit personalizarea nivelului �i a
tipului de
erori raportate, plec�nd de la simple notific�ri �i p�n� la func�ii
personalizate.
</para>
</partintro>
<refentry id="function.error-log">
<refnamediv>
<refname>error_log</refname>
<refpurpose>Trimite un mesaj de eroare c�tre o destina�ie</refpurpose>
</refnamediv>
<refsect1>
<title>Descriere</title>
<methodsynopsis>
<type>int</type><methodname>error_log</methodname>
<methodparam><type>string</type><parameter>message</parameter></methodparam>
<methodparam
choice="opt"><type>int</type><parameter>message_type</parameter></methodparam>
<methodparam
choice="opt"><type>string</type><parameter>destination</parameter></methodparam>
<methodparam
choice="opt"><type>string</type><parameter>extra_headers</parameter></methodparam>
</methodsynopsis>
<para>
Trimite un mesaj de eroare c�tre jurnalul de erori al serverului web, c�tre un
port
<acronym>TCP</acronym> sau c�tre un fi�ier. Primul parametru,
<parameter>message</parameter>, este mesajul de eroare care trebuie �nregistrat.
Cel de-al doilea parametru, <parameter>message_type</parameter>, spune unde
trebuie
s� fie trimis mesajul:
<table>
<title>Tipuri de �nregistr�ri <function>error_log</function></title>
<tgroup cols="2">
<tbody>
<row>
<entry>0</entry>
<entry>
<parameter>message</parameter> este trimis la sistemul de �nregistrare al PHP,
folosind
mecanismul de �nregistrare al sistemului de operare sau un fi�ier, �n
func�ie de cum este
setat� directiva de configurare <link
linkend="ini.error-log">error_log</link>.
</entry>
</row>
<row>
<entry>1</entry>
<entry>
<parameter>message</parameter> va fi trimis c�tre adresa de email setat� de
c�tre parametrul
<parameter>destination</parameter>. Acesta este singurul tip de �nregistrare
unde este
folosit cel de-al patrulea parametru, <parameter>extra_headers</parameter>.
Acest tip de
mesaj folose�te aceea�i func�ie intern� ca �i <function>mail</function>.
</entry>
</row>
<row>
<entry>2</entry>
<entry>
<parameter>message</parameter> este trimis c�tre conexiunea de depanare PHP.
Aceast�
op�iune este disponibil� doar dac� directiva
<link linkend="install.configure.enable-debugger">remote_debugging</link> a
fost activat�.
�n acest caz, parametrul <parameter>destination</parameter> specific� numele
gazdei sau
adresa IP, op�ional num�rul portului, pentru socket-ul de recep�ionare al
informa�iilor
de depanare.
</entry>
</row>
<row>
<entry>3</entry>
<entry>
<parameter>message</parameter> este ad�ugat la fi�ierul
<parameter>destination</parameter>.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<warning>
<para>
Depanarea distant� via TCP/IP este o facilitate disponibil� �n PHP 3 �i
<emphasis>nu</emphasis> este disponibil� �n PHP 4.
</para>
</warning>
<para>
<example role="php">
<title>Exemple <function>error_log</function></title>
<programlisting role="php">
<![CDATA[
// se trimite o notificare prin serverul de �nregistrare
// dac� nu se poate conecta la baza de date
if (!Ora_Logon ($username, $password)) {
error_log ("Baza de date Oracle nu este disponibila!", 0);
}
// notific� administratorul prin email
if (!($foo = allocate_new_foo()) {
error_log ("A ap�rut o problema, nu s-a alocat memorie pentru FOO!", 1,
"[EMAIL PROTECTED]");
}
// alte modalit��i de apelare error_log():
error_log ("Ai dat-o-n bar�!", 2, "127.0.0.1:7000");
error_log ("Ai dat-o-n bar�!", 2, "loghost");
error_log ("Ai dat-o-n bar�!", 3, "/var/tmp/my-errors.log");
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.error-reporting">
<refnamediv>
<refname>error_reporting</refname>
<refpurpose>Seteaz� care erori PHP sunt raportate</refpurpose>
</refnamediv>
<refsect1>
<title>Descriere</title>
<methodsynopsis>
<type>int</type><methodname>error_reporting</methodname>
<methodparam
choice="opt"><type>int</type><parameter>level</parameter></methodparam>
</methodsynopsis>
<para>
Seteaz� nivelul de raportare a erorilor PHP �i returneaz� nivelul anterior.
Nivelul de
raportare poate fi o masc� de bi�i sau numele unei constante. Folosirea
numelor de
constante este �ncurajat� �n mod deosebit pentru a asigura compatibilitatea
cu versiunile
urm�toare. Pe m�sur� ce au fost ad�ugate nivele de eroare, rangul numerelor
�ntregi a
crescut, a�a c� vechile nivele de eroare bazate pe valori �ntregi nu vor avea
totdeauna
comportamentul a�teptat.
</para>
<para>
<example role="php">
<title>Schimb�ri ale valorilor �ntregi</title>
<programlisting role="php">
<![CDATA[
error_reporting (55); // echivalent �n PHP 3 cu E_ALL ^ E_NOTICE
/* ...�n PHP 4, '55' va �nsemna (E_ERROR | E_WARNING | E_PARSE |
E_CORE_ERROR | E_CORE_WARNING) */
error_reporting (2039); // echivalent �n PHP 4 cu E_ALL ^ E_NOTICE
error_reporting (E_ALL ^ E_NOTICE); // Identic �n PHP 3 �i 4
]]>
</programlisting>
</example>
Urma�i leg�turile constantelor pentru a afla ce reprezint�:
<table>
<title>Valori bit pentru <function>error_reporting</function></title>
<tgroup cols="2">
<thead>
<row>
<entry>valoare</entry>
<entry>constant�</entry>
</row>
</thead>
<tbody>
<row>
<entry>1</entry>
<entry>
<link linkend="internal.e-error">E_ERROR</link>
</entry>
</row>
<row>
<entry>2</entry>
<entry>
<link linkend="internal.e-warning">E_WARNING</link>
</entry>
</row>
<row>
<entry>4</entry>
<entry>
<link linkend="internal.e-parse">E_PARSE</link>
</entry>
</row>
<row>
<entry>8</entry>
<entry>
<link linkend="internal.e-notice">E_NOTICE</link>
</entry>
</row>
<row>
<entry>16</entry>
<entry>
<link linkend="internal.e-core-error">E_CORE_ERROR</link>
</entry>
</row>
<row>
<entry>32</entry>
<entry>
<link linkend="internal.e-core-warning">E_CORE_WARNING</link>
</entry>
</row>
<row>
<entry>64</entry>
<entry>
<link linkend="internal.e-compile-error">E_COMPILE_ERROR</link>
</entry>
</row>
<row>
<entry>128</entry>
<entry>
<link linkend="internal.e-compile-warning">E_COMPILE_WARNING</link>
</entry>
</row>
<row>
<entry>256</entry>
<entry>
<link linkend="internal.e-user-error">E_USER_ERROR</link>
</entry>
</row>
<row>
<entry>512</entry>
<entry>
<link linkend="internal.e-user-warning">E_USER_WARNING</link>
</entry>
</row>
<row>
<entry>1024</entry>
<entry>
<link linkend="internal.e-user-error">E_USER_NOTICE</link>
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
<example role="php">
<title>Exemple <function>error_reporting</function></title>
<programlisting role="php">
<![CDATA[
error_reporting(0);
/* Opre�te orice raportare */
/* Exemplele sunt prezentate mai �nt�i �n sintaxa veche (pentru PHP 2/3)
* apoi �n sintaxa nou� (cea recomandat�, pentru PHP 3/4)
*/
error_reporting (7);
error_reporting (E_ERROR | E_WARNING | E_PARSE);
/* bine de folosit pentru erori simple de rulare */
error_reporting (15);
error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
/* bine de folosit pentru raportarea variabilelor neini�ializate (posibil scrise
gre�it) */
error_reporting (63);
error_reporting (E_ALL);
/* raporteaz� toate erorile PHP */
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.restore-error-handler">
<refnamediv>
<refname>restore_error_handler</refname>
<refpurpose>
Restaureaz� func�ia anterioar� de tratare a erorilor
</refpurpose>
</refnamediv>
<refsect1>
<title>Descriere</title>
<methodsynopsis>
<type>void</type><methodname>restore_error_handler</methodname>
<void/>
</methodsynopsis>
<para>
Se folose�te dup� schimbarea func�iei de tratare a erorilor prin apelarea func�iei
<function>set_error_handler</function>, pentru a reveni la func�ia anterioar� de
tratare a erorilor (care poate fi nativ� sau definit� de utilizator).
</para>
<para>
Mai consulta�i <function>error_reporting</function>,
<function>set_error_handler</function>,
<function>trigger_error</function>, <function>user_error</function>
</para>
</refsect1>
</refentry>
<refentry id="function.set-error-handler">
<refnamediv>
<refname>set_error_handler</refname>
<refpurpose>
Seteaz� o func�ie de tratare a erorilor definit� de utilizator
</refpurpose>
</refnamediv>
<refsect1>
<title>Descriere</title>
<methodsynopsis>
<type>string</type><methodname>set_error_handler</methodname>
<methodparam><type>string</type><parameter>error_handler</parameter></methodparam>
</methodsynopsis>
<para>
Seteaz� o func�ie utilizator (<parameter>error_handler</parameter>) pentru
gestionarea
erorilor �ntr-un script. Returneaz� func�ia anterioar� de gestiune (dac� exist�),
sau &false; �n cazul unei erori. Aceast� func�ie v� permite definirea
propriului mod
de tratare a erorilor la execu�ie, de exemplu �n aplica�ii �n care
este nevoie de refacerea unor date/fi�iere c�nd apare o eroare critic�,
sau este necesar� declan�area unei erori dac� sunt �ndeplinite anumite condi�ii
(folosind <function>trigger_error</function>).
</para>
<para>
Func�ia definit� de utilizator trebuie s� accepte doi parametri: codul de
eroare
�i un �ir de caractere care descrie eroarea. �ncep�nd cu versiunea PHP 4.0.2
sunt
accepta�i �nc� trei parametri op�ionali: numele fi�ierului �n care a ap�rut
eroarea,
num�rul liniei la care s-a produs aceast� eroare �i contextul �n care ea a
ap�rut
(un tablou care indic� tabela de simboluri activ� �n punctul �n care a ap�rut
eroarea).
</para>
<para>
Mai jos este exemplificat� tratarea unei excep�ii interne prin declan�area
erorilor
�i tratarea lor cu o func�ie definit� de utilizator:
</para>
<para>
<example>
<title>
Tratarea erorilor cu ajutorul func�iilor <function>set_error_handler</function>
�i
<function>trigger_error</function>
</title>
<programlisting role="php">
<![CDATA[
<?php
// redefinirea constantelor de eroare - doar �n PHP 4
define ('FATAL', E_USER_ERROR);
define ('ERROR', E_USER_WARNING);
define ('WARNING', E_USER_NOTICE);
// setarea nivelului de raportare a erorilor pentru acest script
error_reporting (FATAL | ERROR | WARNING);
// func�ia de tratare a erorilor
function myErrorHandler ($errlevel, $errstr, $errfile, $errline) {
switch ($errlevel) {
case FATAL:
echo "<b>FATAL</b> [$errlevel] $errstr<br>\n";
echo " Eroare fatala la linia ".$errline." in fisierul ".$errfile;
echo ", PHP ".PHP_VERSION." (".PHP_OS.")<br>\n";
echo "Abandon...<br>\n";
exit(1);
break;
case ERROR:
echo "<b>ERROR</b> [$errlevel] $errstr<br>\n";
break;
case WARNING:
echo "<b>WARNING</b> [$errlevel] $errstr<br>\n";
break;
default:
echo "Eroare de tip necunoscut: [$errlevel] $errstr<br>\n";
break;
}
}
// func�ie pentru testarea trat�rii erorilor
function scale_by_log ($vect, $scale) {
if (!is_numeric($scale) || $scale <= 0)
trigger_error("log(x) pentru x <= 0 nu este definita, ati folosit: scale = $scale",
FATAL);
if (!is_array($vect)) {
trigger_error("Tablou de intrare incorect, trebuia un tablou de valori", ERROR);
return null;
}
for ($i = 0; $i < count($vect); $i++) {
if (!is_numeric($vect[$i]))
trigger_error("Valoarea de la pozitia $i nu este un numar, se va folosi 0
(zero)",
WARNING);
$temp[$i] = log($scale) * $vect[$i];
}
return $temp;
}
// setarea gestionarului de erori definit de utilizator
$old_error_handler = set_error_handler("myErrorHandler");
// se define�te un tablou cu un element non-numeric
// �i se declan�eaz� eroare
echo "tablou a<pre>\n";
$a = array(2, 3, "foo", 5.5, 43.3, 21.11);
print_r($a);
echo "</pre>";
// se genereaz� al doilea tablou �i se declan�eaz� o avertizare
echo "----<br>\ntablou b - o atentionare (b = log(PI) * a)\n<pre>";
$b = scale_by_log($a, M_PI);
print_r($b);
echo "</pre>";
// se transmite un �ir de caractere �n loc de un tablou
echo "----<br>\ntablou c - eroare\n<pre>";
$c = scale_by_log("nu este tablou", 2.3);
var_dump($c);
echo "</pre>\n";
// o eroare critica: nu este definit log() pentru zero sau numere negative
echo "----<br>\ntablou d - eroare fatala\n";
$d = scale_by_log($a, -2.5);
?>
]]>
</programlisting>
</example>
Rularea script-ului va produce:
<informalexample>
<programlisting>
<![CDATA[
tablou a
Array
(
[0] => 2
[1] => 3
[2] => foo
[3] => 5.5
[4] => 43.3
[5] => 21.11
)
----
tablou b - o atentionare (b = log(PI) * a)
WARNING [1024] Valoarea de la pozitia 2 nu este un numar, se va folosi 0 (zero)
Array
(
[0] => 2.2894597716988
[1] => 3.4341896575482
[2] => 0
[3] => 6.2960143721717
[4] => 49.566804057279
[5] => 24.165247890281
)
----
tablou c - eroare
ERROR [512] Tablou de intrare incorect, trebuia un tablou de valori
NULL
----
tablou d - eroare fatala FATAL [256] log(x) pentru x <= 0 nu este definita, ati
folosit: scale = -2.5
Eroare fatala la linia 37 in fisierul /softure/htdocs/test.php, PHP 4.0.6 (Linux)
Abandon...
1
]]>
</programlisting>
</informalexample>
</para>
<para>
Este important de re�inut c� gestionarul standard PHP al erorilor va fi ignorat
complet. Set�rile efectuate de <function>error_reporting</function> nu vor
mai avea
nici un efect �i va fi apelat� doar func�ia definit� de utilizator. Se poate
citi �n
continuare valoarea curent� setat� de <function>error_reporting</function>
pentru folosire
adecvat�. Trebuie f�cut� men�iunea c� aceast� valoare va fi zero dac�
instruc�iunea
care a generat eroarea este precedat� de
<link linkend="language.operators.errorcontrol">operatorul @</link> de
control a erorilor.
</para>
<para>
De asemenea, trebuie precizat c� este responsabilitatea programatorului s�
apeleze func�ia
<function>die</function> dac� este necesar. Dac� func�ia de tratare a erorii
nu �ntrerupe
explicit execu�ia, scriptul va continua cu instruc�iunea urm�toare celei care
a generat eroarea.
</para>
<para>
Mai consulta�i <function>error_reporting</function>,
<function>restore_error_handler</function>,
<function>trigger_error</function>, <function>user_error</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.trigger-error">
<refnamediv>
<refname>trigger_error</refname>
<refpurpose>
Genereaz� o eroare/avertisment/notificare la nivelul utilizatorului
</refpurpose>
</refnamediv>
<refsect1>
<title>Descriere</title>
<methodsynopsis>
<type>void</type><methodname>trigger_error</methodname>
<methodparam><type>string</type><parameter>error_msg</parameter></methodparam>
<methodparam
choice="opt"><type>int</type><parameter>error_type</parameter></methodparam>
</methodsynopsis>
<para>
Se folose�te pentru a declan�a o eroare condi�ionat� de utilizator. Se poate
folosi
�n conjunc�ie cu gestionarul nativ al erorilor sau cu o func�ie definit� de
utilizator
(<function>set_error_handler</function>). Func�ioneaz� doar cu familia de
constante
E_USER, valoarea implicit� pentru <parameter>error_type</parameter> fiind
<constant>E_USER_NOTICE</constant>.
</para>
<para>
Aceast� func�ie este util� atunci c�nd se dore�te generarea unui r�spuns
anume
pentru o excep�ie ap�rut� �n timpul rul�rii. De exemplu:
<informalexample>
<programlisting>
<![CDATA[
if (assert ($divisor == 0))
trigger_error ("�mp�r�irea la zero nu este permis�", E_USER_ERROR);
]]>
</programlisting>
</informalexample>
<note>
<para>
Consulta�i <function>set_error_handler</function> pentru un exemplu mai detaliat.
</para>
</note>
</para>
<para>
Mai consulta�i <function>error_reporting</function>,
<function>set_error_handler</function>,
<function>restore_error_handler</function>,
<function>user_error</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.user-error">
<refnamediv>
<refname>user_error</refname>
<refpurpose>
Genereaz� o eroare/avertisment/notificare la nivelul utilizatorului
</refpurpose>
</refnamediv>
<refsect1>
<title>Descriere</title>
<methodsynopsis>
<type>void</type><methodname>user_error</methodname>
<methodparam><type>string</type><parameter>error_msg</parameter></methodparam>
<methodparam
choice="opt"><type>int</type><parameter>error_type</parameter></methodparam>
</methodsynopsis>
<para>
Acesta este un alias pentru func�ia <function>trigger_error</function>.
</para>
<para>
Mai consulta�i <function>error_reporting</function>,
<function>set_error_handler</function>,
<function>restore_error_handler</function>,
<function>trigger_error</function>.
</para>
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->