Jump to content
php.lv forumi

windows 2008 crontab (task scheduler)


Recommended Posts

Man tagad šāda problēma:

serveris ar windows server 2008 standart edition operētājsistēmu.

 

Vajag izpildīt skriptu vienu reizi stundā.

 

Patreiz esmu ielicis vinju task scheduler ka palaiž internet explorer ar parametros iedotu linku uz manu skriptu, kas atrodas localhostaa.

Taču šeit problēma, iexplore.exe lai arī esmu uzlicis ka skrien backgroundā tomēr katru reizi palaižas atsevišķi, un tad nu ir speciāli jākillo... :(

 

Domāju ka daudz prātīgāk būtu cron.bat failiņu izveidot, un to ielikt task schedulii iekšā, taču tajā bat failā vajadzētu būt šādas rindas:

 

X:\usr\local\bin\php5.exe -F X:\home\localhost\www\server-part\cmd.php

 

Ja palaižu šīs rindas no komandrindas (cmd) tad izlec sekojoš errors, ar uzrakstu ka nevar atrast SSLEAY32.dll failu.

 

Labi, saciits, dariits, novelku failu ielieku system32 mapee, tagad palaizhu to pashu rindu, redzu nu jau citu error

 

trūkst vsinit.dll ...

 

Atrodu arī to, ielieku turpat un tagad man šāds error:

 

the ordinal 110 could not be located in the dynamic link library SSLEAY32.dll

 

Ko man ar šo darīt?

 

Problēma jau nebūtu, ja vien tas error būtu konsolē, taču tā vietā, izlec message box un tur obligaati jaanospiež OK poga... :?

 

btw ir arī cits errors, tikai tas jau ir konsolē:

 

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php5/ext\p

hp_curl.dll' - The operating system cannot run %1.

in Unknown on line 0

hello cmdError in my_thread_global_end(): 1 threads didn't exit

 

 

Kādi ieteikumi?

Link to comment
Share on other sites

Sliktu ssleay32.dll faiu esi atradis. Kautkāda versija neatbilst vai tml.\

ssleay32.dll fails jau nāk līdzi php instalācijai (vismaz jaunākajam .zip arhīvam php v5.2.6 versijai).

Šo failu katrā ziņā nav droši likt globālā system32 direktorijā, jo tas katrai aplikācijai var atšķirties versijas ziņā. Un tad būs problēmas, ja tev globāli tur mētāsies viens līks ssleay32.dll fails. Daudz labāk to ir likt blakus php.exe failam.

 

Tas pēdējais errors man izklausās pēc nekorekta php.ini faila, tb nepareizs extension_dir tajā norādīts (vai arī vispār php.ini nav atrasts).

 

Ah, un to -F switchu nezinu kāpēc tev tur vajag. Es php skriptus vienmēr komandrindā esmu laidis ar "php.exe skripts.php" komandu. Bez -F switcha.

Link to comment
Share on other sites

Jaa iespeejams, tuliit paarbaudiishu.

 

pie tam man droshi vien arii php_curl.dll laikam arii nepareizaa versija, jo kad testeejot palaizhu skriptu kur man nevajag curl un pirms tam no php.ini aizkomenteeju to extension ciet, tad arii bez probleemaam...

Link to comment
Share on other sites

nu jaa bat fails straadaa perfekti ja to palaizh ar peliiti.. normaalaa reziimaa, bet tikko to palaizh caur task scheduler tad vinjsh tikai nozibsnii un nekaadi procesi nestraadaa (man php logi pat nesaak veidoties).

 

Varbuut kaads zin ko te varu iesaakt?

 

p.s. pienjemu arii alternatiivos variantus, ja nu ir kaada bezmaksas programma prieksh 64bit windows, kas to dariitu normaali taa lai useris lietojot kompi nemaz neko neredzeetu...

 

bet to scheduli nevar piedabuut pie dziiviibas kaut kaa normaali?

Link to comment
Share on other sites

Tur ar to šeduleri nav nekāda sakara. Problēma ir tavā skriptā, bat failā, vai php konfigurācijā.

Ja gribi, lai tas bat faila logs paliek ilgāk uz ekrāna, tad ieliec bat faila beigās rindiņu pause.

Vai tikpat labi redirektē visu outputu uz kādu failu, tb izpildāmās rindas beigās ieliec tekstu: 1>logfails.txt 2>&1

Link to comment
Share on other sites

Man tur jau bija lai visu output liek logfailaa, tikai nebija tas 2>&1 ...

 

Man bija šādi:

 

c:/...path../php.exe cron.php >> output.txt

 

Nu bet palaižot to tasku vinjsh uzreiz vinju arii nokilloja...

 

Cik sapratu, tad tu, bubu, iesaki rakstiit shaadi:

c:/...path../php.exe cron.php 1>logfails.txt 2>&1

 

un tad nevajadzeetu nokilloties php parsierim, ja?

Link to comment
Share on other sites

Nē, tas neko sakarā ar killošanu nedarīs. Tas tikai papildus standarta error izvadu no programmas redirektēs arī uz to logfails.tx failu.

A kas - pats crontabs killo palaisto procesu (php.exe)? Ja tas tiešām tā ir, tad es nezināšanu, kur ir problēma. Imho tā nav jānotiek.

Link to comment
Share on other sites

nu vinjsh nokillo to bat failu, un nezinu kapeec bet arii php.exe paarstaaj darboties.. hmm

 

pameegjinaaju arii to otro variantu, tas pats, liidzko aizver to konsoli, tad viss process apstaajas

 

 

varbuut ir kaut kaads veids, kaa to procesu aizsuutiit backgroundaa no bat faila???

Link to comment
Share on other sites

Task scheduleris pats aizver konsoles logu, un aizverot konsole laikam izpilda to Ctrl+C ...

 

Nu bet lai nu kā būtu, es esmu atradis vienu risinājumu, vismaz pagaidām liekas ka strādās korekti, bet pēc kāda laika būs jāpārbauda, vai kaut kas neiet grīstē :D

Tā kā arī internet exploreri, schedule grib (un vajag) pēc kāda laika nokillot, tad nu nezinu kapēc killo arī kaut kādā veidā saistītos procesus (kā viņš to var izsaukt, nezinu, bet novēroju faktu...)

Tad nu lai windows nevar manu skriptu izsekot un pakaapeniski nokillot, izdomaaju shaadu stulbu, liikumainu sheemu, kas patreiz veiksmiigi nostraadaa.

 

Tad patreizējais rīcības plāns:

 

1) izsaucu task schedulii, iexplore.exe ar parametriem http://localhost/exec.php

2) exec.php izsauc caur exec() funkciju izpildam komandu "c:/...path../php.exe cron.php 1>logfails.txt 2>&1"

3) cron.php satur linku uz localhost, un caur CURL izsauc uz localhost esosho index.php

4) index.php jau saak pildiit iisto uzdevumu, kas arii bija saakotneeji vajadziigs :)

 

Visi solji tiek ielogoti vienaa vai otraa veidaa, lai zinaatu kas tur noticies.

 

Taa kaa index.php apvieno vairaakus procesus, tad arii tam papildus ir uzstaadiits lielaaks laika limits. Liidz shim bija probleema, ka aizverot konsoli, nesaprotamaa veidaa tiek nokillots ne tikai cron.php, bet arii vijna izsauktais URL uz index.php, un taa darbiiba tika apstaadinaata, liidz ar to tika izveidots tas exec.php lai apmaaniitu to killoshanas procesu, un tad ja arii to exec.php kaads nokillo, tad vienalga viss process izpildaas veiksmiigi :))

 

 

 

 

Interesanti, varbūt kāds var pastāstīt savu pieredzi, vai arī padalīties ar savām zināšanām, kāpēc win 2008 server operētājsistēma taisa šādas neprognozeetas killošanas pasākumus? Vai arī es vienkārši nemāku pareizi savam gadiijumam to rīku sakonfigurēt..? :D

Edited by darksign
Link to comment
Share on other sites

×
×
  • Create New...