HTML, Excel, Word, SEOÎñíîâû PHP ⇒ Àâòîìàòèçàöèÿ

PHP äëÿ "÷àéíèêîâ"

Èíñòðóìåíòû
Âûáèðàåì IDE
Âûáèðàåì Web-ñåðâåð
Âûáèðàåì ÑÓÁÄ
Ñòðóêòóðà ÿçûêà PHP
Ïåðâûé øàã
Ñèíòàêñèñ
Òèïû äàííûõ
Ïåðåìåííûå è êîíñòàíòû
Îïåðàòîðû
Âûðàæåíèÿ
Óïðàâëÿþùèå ñòðóêòóðû
Ôóíêöèè
Êëàññû
Èñêëþ÷åíèÿ
Îøèáêè
Ìàññèâû
Ãëîáàëüíûå ìàññèâû
Cookies
Ñåññèè
Çàãðóçêà ôàéëîâ
Ðàáîòà ñ ôàéëàìè
Ðàáîòà ñ ôàéëàìè íà äèñêå
Ðàáîòà ñ äàííûìè â ôàéëå
Ïðèìåð óïðàâëåíèÿ ôàéëàìè
Ðàáîòà ñ áàçàìè äàííûõ
Ïîäêëþ÷åíèå
Àíàëèç ðåçóëüòàòîâ
Âûïîëíåíèå çàïðîñîâ
Îòêëþ÷åíèå
Ïðèìåð: îòñëåæèâàíèå ïîëüçîâàòåëåé
Ðàáîòà â ñåòè
Îòïðàâêà ïî÷òû
Áåçîïàñíîñòü
HTTP-àóòåíòèôèêàöèÿ
Çàùèòà ëîãèíîì è ïàðîëåì
Àâòîìàòèçàöèÿ
Ðåãóëÿðíûå âûðàæåíèÿ â PHP
Èíòåãðàöèÿ
PHP è JavaScript



Àâòîìàòèçàöèÿ


Àâòîð: Àðòåìüåâ Ñåðãåé Èãîðåâè÷
ICQ: 438856621
email: _spin_@bk.ru

Èíîãäà íà ñàéòå âîçíèêàåò íåîáõîäèìîñòü îðãàíèçîâàòü ïåðèîäè÷åñêîå âûïîëíåíèå êàêèõ-ëèáî çàäà÷. Ýòî ìîæåò áûòü ðàññûëêà ïî÷òû, ïðîâåðêà è ðåçåðâèðîâàíèå áàç äàííûõ, ÷èñòêà êåøåé, îáíîâëåíèå ñîäåðæèìîãî êàòàëîãîâ è ìíîãîå äðóãîå.


Àâòîìàòèçàöèè ìîæíî äîáèòüñÿ äâóìÿ ïóòÿìè - èñïîëüçóÿ ñðåäñòâà PHP èëè èñïîëüçóÿ âíåøíèå ïðèëîæåíèÿ-ïëàíèðîâùèêè.


Ïåðâûé ñïîñîá òðåáóåò õîðîøèõ çíàíèé ÿçûêà è ïðèíöèïîâ ðàáîòû ñåðâåðà. Ñìûñë ñïîñîáà â òîì, ÷òî ïïîñëå êàæäîé çàãðóçêè ñòðàíèöû ñêðûòíî äëÿ ïîëüçîâàòåëÿ çàïóñêàåòñÿ ñëóæåáíûé ñêðèïò, äåëàþùèé âñå íåîáõîäèìûå îïåðàöèè. Íàïðèìåð:

// index.php

<?php
	// ãåíåðàöèÿ è âûâîä ñòðàíèöû ïîëüçîâàòåëþ
	// ...
	// ñòðàíèöà îòïðàâëåíà è ìîæíî 
	// âûïîëíèòü ñåðâèñíûå ôóíêöèè
	
	// ïîäêëþ÷àåì íóæíûå ôàéëû
	include('service.php');
	// çàïóñêàåì âûïîëíåíèå îïåðàöèé
	EmailSiteNews();
	BackupMyDatabase();
	UpdateSiteCounters();

?>

Åäèíñòâåííîå ïðåèìóùåñòâî ýòîãî ìåòîäà - íå òðåáóåòñÿ íè÷åãî, êðîìå èíòåðïðåòàòîðà PHP, à âîò ñåðü¸çíûõ íåäîñòàòêîâ íåñêîëüêî:

1. Ñåðâèñíûå îïåðàöèè âûïîëíÿþòñÿ ïðè êàæäîé çàãðóçêå èëè îáíîâëåíèè ñòðàíèöû, ñëåäîâàòåëüíî ïðè áîëüøîì êîëè÷åñòâå ïîñåòèòåëåé ñåðâåð áóäåò ñèëüíî ïåðåãðóæåí.

2. Ñåðâèñíûé ñêðèïò äîëæåí êîíòðîëèðîâàòü âðåìÿ ñâîåãî âûïîëíåíèÿ è ñâîåâðåìåííî ñîõðàíÿòü ïðîìåæóòî÷íûå ðåçóëüòàòû, ò.ê. íà íà ñåðâåðå ñóùåñòâóåò ïðåäåëüíîå âðåìÿ âûïîëíåíèÿ ñêðèïòîâ (îáû÷íî 30-40 ñåêóíä). ïî èñòå÷åíèè êîòîðîãî ñêðèïò ïðèíóäèòåëüíî ïðåðûâàåòñÿ.

3. Îòñóòñòâóåò âîçìîæíîñòü ïëàíèðîâàíèÿ âûïîëíåíèÿ ñêðèïòà, ò.å. åñëè íè îäèí ïîëüçîâàòåëü íà ñàéò íå çàéä¸ò - âñå çàäà÷è îñòàíóòñÿ íåèñïîëíåííûìè.

4. Ïðè íåïðàâèëüíîé îáðàáîòêå îøèáîê îíè áóäóò îòîáðàæàòüñÿ â áðàóçåðå ïîëüçîâàòåëÿ. Ýòî ïëîõî ñàìî ïî ñåáå, à â íåêîòîðûõ ñëó÷àÿõ òàêèå îøèáêè ïðèâîäÿò åù¸ è ê "ðàñïîëçàíèþ" äèçàéíà.

5. Î÷åíü ñëîæíî ïëàíèðîâàòü íàãðóçêó íà ñåðâåð, ò.ê. ïîñåùàåìîñòü ñàéòà ìîæíî ïðåäñêàçàòü ëèøü ñ îïðåäåë¸ííîé âåðîÿòíîñòüþ.

Áîëåå îïòèìàëüíûì è ïðîñòûì ðåøåíèåì ÿâëÿåòñÿ èñïîëüçîâàíèå âíåøíèõ ïðîãðàìì-ïðàíèðîâùèêîâ. Íàïðèìåð, áîëüøèíñòâî Unix-ïðîâàéäåðîâ ïðåäîñòàâëÿþò äîñòóï ê ïðîãðàììå crontab, êîòîðàÿ äà¸ò âîçìîæíîñòü çàïëàíèðîâàòü âûïîëíåíèå ëþáûõ çàäà÷ íà îïðåäåë¸ííîå âðåìÿ èëè ñ çàäàííîé ïåðèîäè÷íîñòüþ. Ñrontab ïîçâîëÿåò âûïîëíÿòü ñêðèïòû PHP, ïðè ýòîì èíòåðïðåòàòîð çàïóñêàåòñÿ â ðåæèìå êîìàíäíîé ñòðîêè.

Êàê ïðàâèëî, â ïàíåëè óïðàâëåíèÿ õîñòèíãîì åñòü âèçóëüíûé èíòåðôåéñ äëÿ ðåäàêòèðîâàíèÿ cron-ïðàâèë. ×àùå âñåãî âñòðå÷àþòñÿ äâà òèïà èíòåðôåéñîâ - êëàññè÷åñêèé è ðàñøèðåííûé. Ôóíêöèîíàëüíî îíè èäåíòè÷íû, íî ðàñøèðåííûé âèä áîëåå íàãëÿäåí è ïîíÿòåí íà÷èíàþùåìó ïîëüçîâàòåëþ.  ëþáîì ñëó÷àå, ïðè ñîçäàíèè íîâîãî çàäàíèÿ âàì íåîáõîäèìî áóäåò óêàçàòü òðè ïàðàìåòðà: âðåìÿ çàïóñêà, ñêðèïò äëÿ çàïóñêà è àäðåñ ýëåêòðîííîé ïî÷òû, êóäà áóäåò íàïðàâëåí îò÷¸ò î âûïîëåíèè.

Âðåìÿ çàïóñêà çàäà¸òñÿ ïÿòüþ áëîêàìè: ìèíóòà, ÷àñ, äåíü_ìåñÿöà, ìåñÿö è äåíü_íåäåëè. Äëÿ êàæäîãî áëîêà ìîæíî óêàçàòü ïåðèîäè÷íîñòü, òî÷íîå çíà÷åíèå, äèàïàçîí èëè ñïèñîê çíà÷åíèé, à åñëè óêàçàòü "*" (çâ¸çäî÷êà), òî çíà÷åíèå ó÷èòûâàòüñÿ íå áóäåò. Íàïðèìåð:

// åæåíäåâíûé çàïóñê â 3:00
* 3 * * *

// çàïóñê ñêðèïòà êàæäûå ïÿòü ìèíóò // ("/" - îçíà÷àåò "êàæäûå")/ */5 * * * *
// åæå÷àñíûé çàïóñê ñêðèïòà // â ïîíåäåëüíèê ñ 3:00 äî 7:00 * 3-7 * * * mon
// åæå÷àñíûé çàïóñê ñêðèïòà // â ïîíåäåëüíèê ñ 3:00 äî 5:00 * 3,4,5 * * * mon
// çàïóñê â íîâûé ãîä 59 23 31 dec *

Âòîðîé ïàðàìåòð - ýòî ñîáñòâåííî èñïîëíÿåìàÿ êîìàíäà.  áîëüøèíñòâå ñëó÷àåâ êîìàíäà âûïîëíåíèÿ ñêðèïòà çàïèñûâàåòñÿ â ôîðìàòå <ïóòü_ê_èíòåðïðåòàòîðó> <ïîëíûé_ïóòü_ê_ñêðèïòó>. Ïðè ýòîì âñå ïóòè óêàçûâàþòñÿ ïîëíîñòüþ, íà÷èíàÿ îò êîðíåâîãî êàòàëîãà ñåðâåðà. Íàïðèìåð, èíòåðïðåòàòîð ðàñïîëîæåí â "./local/sbin/php5.exe", à èñïîëíÿåìûé ñêðèïò - â "web/http/service.php". Åñëè íàì íàäî âûïîëíÿòü ñêðèïò åæå÷àñíî, òî ñòðîêà çàäàíèÿ áóäåò ñëåäóþùåé:

0 * * * * /local/sbin/php5.exe /web/http/service.php

Òðåòèé ïàðàìåòð - àäðåñ ýëåêòðîííîé ïî÷òû - ââîäèòñÿ îäèí ðàç äëÿ âñåõ çàäàíèé. Ðåçóëüòàòû âûïîëíåíèÿ çàäà÷è áóäóò âûñûëàòüñÿ íà óêàçàííûé àäðåñ. Åñëè ñêðèïò áûë çàâåðøåí ñ îøèáêîé - â òåêñòå ïèñüìà áóäåò ñîîòâåòñòâóþùàÿ çàïèñü ñ óêàçàíèåì îøèáêè è ñòðîêè, ãäå îíà ïðîèçîøëà. Ê ñîæàëåíèþ, ñîîáùåíèÿ áóäóò ïðèõîäèòü è òîãäà, êîãäà âñ¸ ïðîøëî óñïåøíî, ïîýòîìó åñëè âû ðåøèëè âûïîëíÿòü ñêðèïò åæåìèíóòíî - ãîòîâüòåñü ïîëó÷àòü ïî øåñòüäåñÿò ïèñåì â ÷àñ.

Çàïóñê èíòåðïðåòàòîðà â ðåæèìå êîìàíäíîé ñòðîêè íàêëàäûâàåò íåêîòîðûå îãðàíè÷åíèÿ íà ïðîãðàììèñòà. Òàê, ñòàíîâÿòñÿ íåäîñòóïíû íåêîòîðûå ãëîáàëüíûå ìàññèâû è ïåðåìåííûå Apache. Ïîýòîìó íà crontab íå ñòîèò âîçëàãàòü çàäà÷è, òðåáóþùèå çíàíèÿ íàñòðîåê web-ñåðâåðà èëè äðóãèõ ñèñòåìíûõ ïàðàìåòðîâ.

Òàêèì îáðàçîì, åñëè âàø ïðîâàéäåð è ïðåäîñòàâëÿåò äîñòóï ê ïëàíèðîâùèêó çàäàíèé - îáÿçàòåëüíî ïîëüçóéòåñü èì è íå èçîáðåòàéòå âåëîñèïåä. Íó à åñëè óæ âûáîðà íå îñòà¸òñÿ è crontab íåäîñòóïåí - âûõîäèòå èç ïîëîæåíèÿ ñðåäñòâàìè PHP è ñîáñòâåííîé ñìåêàëêîé.



 íà÷àëî ñòðàíèöû



 íà÷àëî ñòðàíèöû