|
View:
New views
7 Messages
—
Rating Filter:
Alert me
|
|
|
Projekt (állás) ajánlatRendben, tehát az
előző threadekre, mert nekem viszonylag gyorsan, egy héten belül kéne a
következő megoldás:
- figyeli,
hogy az adott script fut -e, és ha valamiért nem, de még menni kell akkor
FOLYTATJA onnan, ahol abbahagyta (adatbázis flag által, én ezt
biztosítom)
- cmd.exe
használata nélkül.
- akár áramszünet,
akár bármi más kivétel miatt folytatja.
- nincs lehetőség
a rendszerbe belepiszkálni (mint pl. rendszer indításnál törölni egy
könyvtárat)
- windows server
2003 alatti megvalósítás
Erre várok akkor
ajánlatot, illetve pontosítani szeretnék azzal, aki egyáltalán érdeklődik
eziránt.
Az ajánlat a
bármilyen formában történő egyeztetés után él.
Vasó
-- Weblabor hírlevél: http://weblabor.hu/hirlevel -- wl-phplista (wl-phplista@...) levelezőlista https://bors.hoszting.com/mailman/listinfo/wl-phplista Keresheto archivum: http://weblabor.hu/kereses -- etikett: http://weblabor.hu/levlistak/illemszabaly offlista: https://weblabor.hu/levlistak |
|
|
Re: Projekt (állás) ajánlat> - figyeli, hogy az adott script fut -e, és ha valamiért nem, de még
> menni kell akkor FOLYTATJA onnan, ahol abbahagyta Ez a rész tök egyszerű azzal a kóddal, amit küldtem neked: $lock = uDb_Lock::acquire(uDb_Lock::LOCK_VIEWER_COUNT_LOG_PROCESSOR); if ( false === $lock ) { exit; } Ezt beteszed a script elejere, es mondjuk cronbol elindítod percenként. Üdv, Felhő -- Weblabor hírlevél: http://weblabor.hu/hirlevel -- wl-phplista (wl-phplista@...) levelezőlista https://bors.hoszting.com/mailman/listinfo/wl-phplista Keresheto archivum: http://weblabor.hu/kereses -- etikett: http://weblabor.hu/levlistak/illemszabaly offlista: https://weblabor.hu/levlistak |
|
|
Re: Projekt (állás) ajánlatKöszi, utánanézek, nem látom hol írtad volna, ez milyen csomag?
Rákerestem erre, de nem találtam találatot: LOCK_VIEWER_COUNT_LOG_PROCESSOR Vasó > -----Original Message----- > From: wl-phplista-bounces@... > [mailto:wl-phplista-bounces@...] On Behalf Of Gergely Hodicska > Sent: Tuesday, July 22, 2008 7:10 AM > To: weblabor PHP levlista > Subject: Re: [wl-phplista] Projekt (állás) ajánlat > > > - figyeli, hogy az adott script fut -e, és ha valamiért nem, de még > > menni kell akkor FOLYTATJA onnan, ahol abbahagyta > Ez a rész tök egyszerű azzal a kóddal, amit küldtem neked: > > $lock = uDb_Lock::acquire(uDb_Lock::LOCK_VIEWER_COUNT_LOG_PROCESSOR); > if ( false === $lock ) > { > exit; > } > > Ezt beteszed a script elejere, es mondjuk cronbol elindítod > percenként. > > > Üdv, > Felhő -- Weblabor hírlevél: http://weblabor.hu/hirlevel -- wl-phplista (wl-phplista@...) levelezőlista https://bors.hoszting.com/mailman/listinfo/wl-phplista Keresheto archivum: http://weblabor.hu/kereses -- etikett: http://weblabor.hu/levlistak/illemszabaly offlista: https://weblabor.hu/levlistak |
|
|
Re: Projekt (állás) ajánlat> Köszi, utánanézek, nem látom hol írtad volna, ez milyen csomag?
> Rákerestem erre, de nem találtam találatot: Postaládádban keress rá (pár levéllel ezelőtt küldtem a kódot). ;) > LOCK_VIEWER_COUNT_LOG_PROCESSOR Ez csak egy nálunk futó folyamat által használt lock. Úgy ítéltem meg, hogy jobb ha minden lock nevesítve van, ne fordulhasson elő, hogy valaki elírja a lock nevét, ezért tárolva vannak a lehetséges lockok, valamint főleg kódkiegészítés miatt mindegyikhez van egy konstans is definiálva, így végképp kényelmesen lehet használni. Üdv, Felhő -- Weblabor hírlevél: http://weblabor.hu/hirlevel -- wl-phplista (wl-phplista@...) levelezőlista https://bors.hoszting.com/mailman/listinfo/wl-phplista Keresheto archivum: http://weblabor.hu/kereses -- etikett: http://weblabor.hu/levlistak/illemszabaly offlista: https://weblabor.hu/levlistak |
|
|
Re: Projekt (állás) ajánlat> -----Original Message-----
> From: wl-phplista-bounces@... > [mailto:wl-phplista-bounces@...] On Behalf Of Gergely Hodicska > Sent: Tuesday, July 22, 2008 11:46 PM > To: weblabor PHP levlista > Subject: Re: [wl-phplista] Projekt (állás) ajánlat > > > Köszi, utánanézek, nem látom hol írtad volna, ez milyen csomag? > > Rákerestem erre, de nem találtam találatot: > Postaládádban keress rá (pár levéllel ezelőtt küldtem a kódot). ;) > > > LOCK_VIEWER_COUNT_LOG_PROCESSOR > Ez csak egy nálunk futó folyamat által használt lock. Úgy > ítéltem meg, hogy jobb ha minden lock nevesítve van, ne > fordulhasson elő, hogy valaki elírja a lock nevét, ezért > tárolva vannak a lehetséges lockok, valamint főleg > kódkiegészítés miatt mindegyikhez van egy konstans is > definiálva, így végképp kényelmesen lehet használni. > > > Üdv, > Felhő Akkor nem biztos hogy értelek. Tehát, van egy mssql táblám, és abban lockolok mondju egy rekordot. Ha a record lockolva van, akkor még megy ki a levél, ha áramszünet van, akkor automatikusan oldódik a lock? Esküszöm nem találom az előző leveled, amiben ezt említetted volna, ezért kérdeztem, hogy pontosan mit is tanácsoltál? Vasó -- Weblabor hírlevél: http://weblabor.hu/hirlevel -- wl-phplista (wl-phplista@...) levelezőlista https://bors.hoszting.com/mailman/listinfo/wl-phplista Keresheto archivum: http://weblabor.hu/kereses -- etikett: http://weblabor.hu/levlistak/illemszabaly offlista: https://weblabor.hu/levlistak |
|
|
Re: Projekt (állás) ajánlat> Akkor nem biztos hogy értelek. Tehát, van egy mssql táblám, és abban
> lockolok mondju egy rekordot. Az én konkrét példámban MySQL van, ahol a get_lock-nak lehet tetszőleges szöveget átadni. Nem tudom, hogy ezt így egy az egyben támogatja-e az MSSQL, de valami nagyon hasonló biztosan van. Persze a DB-t én arra az esetre javaslom/használom, ahol az infrastruktúrában amúgy is ott a DB. > Esküszöm nem találom az előző leveled, amiben ezt említetted volna, ezért > kérdeztem, hogy pontosan mit is tanácsoltál? Még a processlist threadben volt: <?php /** * DB alapu lockolast megvalosito osztaly. * * Minden egyes hasznalati esetre egy kulon konstanst hozunk letre. Az erteket celszeru a meg * meglevo peldak alapjan letrehozni, hogy biztos elkeruljunk egy esetleges nevutkozest. Ezek a * lockok a teljes DB szintjen jonnek letre, ezert fontos a lock nevenek egyedisege. * @todo: a lock az szerverenként van tárolva, nem pedig adatbázisonként, ezért a lock nevébe * majd bele kell vonni a DB nevét is * * @author felho <felho@...> * * Changelog: * 08Jun21 felho Alap verzio. * 08Jun29 felho Lock_Dao -> uDb_Lock, valamint a teljesen statikus kialakitas helyett atallas * egy kevert megoldasra: a statikus acquire a lock sikeres megszerzese eseten egy * uDb_Lock peldanyt ad vissza, igy pl. tudunk destruktort hasznalni. */ class uDb_Lock { /** A batch/cron/viewer_count_log_processor.php altal hasznalat lock. */ const LOCK_VIEWER_COUNT_LOG_PROCESSOR = 'uDb_Lock.LOCK_VIEWER_COUNT_LOG_PROCESSOR'; /** A batch/cron/channel_statistic_viewer_count_updater.php altal hasznalat lock. */ const LOCK_CHANNEL_STATISTIC_VIEWER_COUNT_UPDATER = 'uDb_Lock.LOCK_CHANNEL_STATISTIC_VIEWER_COUNT_UPDATER'; /* * Ez a tomb tartalmazza az elkerheto lockok neveit. A tomb elemek erteke annak a DB kapcsolatak * a neve kell legyen, amelyikben szeretnenk letrehozni a lockot. */ static protected $possibleLocks = array ( self::LOCK_VIEWER_COUNT_LOG_PROCESSOR => 'logs', self::LOCK_CHANNEL_STATISTIC_VIEWER_COUNT_UPDATER => 'logs', ); /** * A lock nevet tarolja egy sikeresen letrehozott lock eseten. Igazabol csak azert lesz * szuksegunk ra, hogy a destruktor fel el tudja engedni a lockot, ha az explicit modon nem * tortent volna meg. * * @var string */ protected $lockName = null; /** * A db kapcsolatot tarolja, amelyiken letrehoztuk a lockot. * * @var qDb */ protected $dbConnection = null; /** * Megprobalja megszerezni az adott nevu lockot. * * Elofordulhat olyan tipusu lock, amit mindig egy adott entitasra vonatkoztatva szeretnenk * hasznalni (pl. csatorna adatok updatelese). Ilyenkor az $id parameterben adhatjuk meg az * adott entitas azonositojat, es ilyenkor ezt hozzafuzzuk a lock nevehez. Alap esetben ha az * adatbaziskezelo nem tud megszerezni egy lockot, akkor egybol visszater (ez teljesen jo * peldaul, ha azt szeretnenk megakadalyozni, hogy egy cron onmagara fusson), de a $timeout * parameter segitsegevel megadhatunk egy varakozasi idot. Ez jo lehet akkor, ha tudjuk, hogy * nehany, alapvetoen gyors folyamat kozott elofordulhat versenyhelyzet. Ilyenkor az itt * megadott varakozasi idovel sorba rendezhetjuk ezeket. * * @param string $lockName A megszerzendo lock neve. * @param integer $id A "lockolando" entitas azonositoja. * @param integer $timeout Ennyi masodpercet var az adatbaziskezelo arra, hogy megszerezze a * lockot. * * @return uDb_Lock|false Ha sikerul a lockot megszerezni, akkor egy uDb_Lock peldanyt a * visszateresi ertek, ellenkezo esetben false. */ public static function acquire($lockName, $id = null, $timeout = 0) { if ( empty(self::$possibleLocks[$lockName]) ) { throw new Exception('Invalid lockname ('.$lockName.') was specified!'); } if ( null !== $id ) { $lockName .= '.'.$id; } $sql = "/* ".__FILE__."@".__LINE__." */ SELECT GET_LOCK('?', ?) "; $db = qDb::get(self::$possibleLocks[$lockName]); $ret = $db->getOne($sql, array($lockName, $timeout)); return '1' == $ret ? new uDb_Lock($lockName, $db) : false; } /** * Konstruktor * * @param string $lockName A megszerzendo lock neve. * @param qDb $dbConnection A db kapcsolat, amin letrehoztuk a lockot. * * @return uDb_Lock */ protected function __construct($lockName, qDb $dbConnection) { $this->lockName = $lockName; $this->dbConnection = $dbConnection; } /** * Destruktor. * * Ha meg nem tortent volna meg explicit a lock elengedese, akkor a destruktor megteszi ezt. */ public function __destruct() { if ( null !== $this->lockName ) { $this->release(); } } /** * Elengedi a lockot (a peldanyon hivjuk !!!). Ha ezt explicit nem hivjuk meg, akkor a script * vegeztevel a destruktor megteszi ezt. Ennek ellenere celszeru lehet a lockot a lehetosegekhez * kepest a leghamarabb elengedni.. * * @return boolean True ha sikerul elengedni a lockot, ellenkezo esetben fasle. */ public function release() { $sql = "/* ".__FILE__."@".__LINE__." */ SELECT RELEASE_LOCK('?') "; $this->dbConnection->getOne($sql, array($this->lockName)); return '1' == $ret; } } ?> Üdv, Felhő -- Weblabor hírlevél: http://weblabor.hu/hirlevel -- wl-phplista (wl-phplista@...) levelezőlista https://bors.hoszting.com/mailman/listinfo/wl-phplista Keresheto archivum: http://weblabor.hu/kereses -- etikett: http://weblabor.hu/levlistak/illemszabaly offlista: https://weblabor.hu/levlistak |
|
|
Re: Projekt (állás) ajánlat> -----Original Message-----
> From: wl-phplista-bounces@... > [mailto:wl-phplista-bounces@...] On Behalf Of Gergely Hodicska > Sent: Tuesday, July 22, 2008 11:46 PM > To: weblabor PHP levlista > Subject: Re: [wl-phplista] Projekt (állás) ajánlat > > > Köszi, utánanézek, nem látom hol írtad volna, ez milyen csomag? > > Rákerestem erre, de nem találtam találatot: > Postaládádban keress rá (pár levéllel ezelőtt küldtem a kódot). ;) > > > LOCK_VIEWER_COUNT_LOG_PROCESSOR > Ez csak egy nálunk futó folyamat által használt lock. Úgy > ítéltem meg, hogy jobb ha minden lock nevesítve van, ne > fordulhasson elő, hogy valaki elírja a lock nevét, ezért > tárolva vannak a lehetséges lockok, valamint főleg > kódkiegészítés miatt mindegyikhez van egy konstans is > definiálva, így végképp kényelmesen lehet használni. > > > Üdv, > Felhő Végülis az egyik legegyszerűbb utat választottam. Létrehozok egy temporary táblát, mondjuk hirlevel5 néven, amibe berakok egy dátumot. Ha ez a tábla él, akkor addig az ellenörző script nem engedi a kiküldést, mert az már folyamatban van. Ha a gép újraindul, vagy az mssql újraindul, akkor nem lesz ez a tábla, tehát akkor ha a státusz szeritn még küldeni kéne, de nincs ez a tábla, akkor mehet újra a kiküldés. Még azt kell leellenőriznem, hogy ha a script és az mssql között szakad meg a kapcsolat, vagy a script lehal, akkor vajon megmarad -e a tábla. Vasó -- Weblabor hírlevél: http://weblabor.hu/hirlevel -- wl-phplista (wl-phplista@...) levelezőlista https://bors.hoszting.com/mailman/listinfo/wl-phplista Keresheto archivum: http://weblabor.hu/kereses -- etikett: http://weblabor.hu/levlistak/illemszabaly offlista: https://weblabor.hu/levlistak |
| Free Forum Powered by Nabble | Forum Help |