- sziku69: Fűzzük össze a szavakat :)
- Azonos árketegóriájú (105-110.000 Ft-os) relatív olcsó telefonok kamerái
- Luck Dragon: Asszociációs játék. :)
- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Brogyi: CTEK akkumulátor töltő és másolatai
- Magga: PLEX: multimédia az egész lakásban
- Tomasz72: Ventilátor upgrade
- Lalikiraly: SÜNI energiaital.
- bambano: Bambanő háza tája
Új hozzászólás Aktív témák
-
CSorBA
őstag
válasz
Babetta-X #13099 üzenetére
Szerintem valami ilyesmire gondolsz:
.htaccess segítségével az enoldalam.hu fő domaint a tárhelyen átirányítjuk az enoldalam mappában lévő index.php-ra. Ha mégsem erre gondoltál, akkor bocsi
Options -Indexes
# Turn on the rewrite enginge
RewriteEngine on
# Main domain
RewriteCond %{HTTP_HOST} ^(www.)?enoldalam.hu$
# Used subfolder (RewriteCond)
RewriteCond %{REQUEST_URI} !^/enoldalam/
# Additional settings.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Used subfolder (RewriteRule)
RewriteRule ^(.*)$ /enoldalam/$1
# Main domain and the used subfolder with index file
RewriteCond %{HTTP_HOST} ^(www.)?enoldalam.hu$
RewriteRule ^(/)?$ enoldalam/index.php [L] -
Babetta-X
senior tag
Sziasztok! Nagyon béna kérdésem lenne. Adott egy könyvtár, amibe külön mappába fel van telepítve a phpbb fórummotor, a wordpress rendszer meg a phpmyadmin adatbázis kezelő. Namost ha rámegyek az énoldalam.hu -ra akkor csak egy file kezelőt ad ki, amivel ha rámegyek az általam használni kívánt mappára bejön az adott mappa index.hu-ja én meg örülhetek magamnak. Én viszont azt szeretném, hogy csak az egyik index.hu jöjjön be az énoldalam.hu beírásakor. Ezt hogyan lehet megoldani? Én arra gondoltam gyökérkönyvtárban csinálok egy index.html-t és ezt valahogy ráirányítom az általam kívánt mappára, de biztos vagyok benne, hogy van ennél jobb megoldás is.
Válaszotokat és segítségeteket előre is nagyon köszönöm!
-
Speeedfire
félisten
válasz
Sk8erPeter #13097 üzenetére
Igen, újraindítottam. De lehet ez a php 5.4 szórakozik velem.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #13096 üzenetére
Újraindítottad a webszervert, miután átírtad?
A Default timezone-nál is "Europe/Budapest" kéne, hogy szerepeljen, de nálad az a default UTC, szóval valami tényleg nem okés. -
rt06
veterán
válasz
Speeedfire #13094 üzenetére
mivel irtad at? sorvegeket ellenorizted?
esetleg probald meg a date_default_timezone_set() parancsot, hogy arra mit mond
date_default_timezone_set( "Europe/Budapest" ); -
rt06
veterán
válasz
Speeedfire #13092 üzenetére
csak egy tiip: ellenorizd, hogy nem windoze sortoreseket hasznalsz-t (van, ami nem szereti linux kornyezetben)
-
cstom
aktív tag
válasz
fordfairlane #13090 üzenetére
Köszi, mint kiderült a wordpress address-t ha átírom, az ugyanaz amit fent leírtam, valamint egyből kihajít az oldalról, és csak phpmyadminba visszaírva az ip-t localhostra enged vissza. A site adress átírása viszont segített. Köszönöm!
-
cstom
aktív tag
válasz
fordfairlane #13088 üzenetére
Ha a wp-config-ra gondoltál, ott átírtam a localhostot a kiszolgáló gép ip címére. Ez nem segített. Viszont ha a phpmyadmin/weblap adatbázis/wp_options/siteurl-t átírom a gép ip címre, akkor a kezdőlapot tökéletesen jeleníti meg. Viszont bármilyen linkre akarok kattintani az oldalon, ott már a localhost/xy-ról akarja lekérni az adatokat, tehát ismét error. Az lenne a legegyszerűbb, ha valahol meg lehetne adni, hogy a localhost helyett, mindig a ip cím legyen az alapértelmezett elérési útvonal.
-
Soak
veterán
Mondjuk a host fileodat modositot, szóval pl a enweblapom.dev arra az ip-re mutat ahol futtatod a siteot. Plusz nyilván a linkeket is modositani kell ugy, hogy a base url enweblapom.dev legyen. (ez könyü ha jól van konfigolva ha nem akkor az szívás) , utána meghivod az enweblapom.dev-et és behozza a siteodat.
Persze erre fel kell készíteni a webservert is.
-
cstom
aktív tag
Igen, én is arra gondolok. Közben felmerült még egy probléma. Azt a gépet amelyiken fut az xampp/wordpress az IP/oldal neve alapján érem el böngészőből. Viszont ha valamilyen hivatkozásra klikkelek a weblapon, az már localhost/valami -re irányítana, így viszont nem találja meg a kért oldalt. Hol tudnám ezt megváltoztatni?
-
cstom
aktív tag
válasz
Sk8erPeter #13083 üzenetére
-
cstom
aktív tag
válasz
Sk8erPeter #13081 üzenetére
Fura, mert próbáltam joomlát is, azzal nem volt probléma.
-
cstom
aktív tag
Sziasztok! Következő problémám lenne: készítettem egy weblapot (wordpress) localhoston (xampp server), viszont ha helyi hálón egy másik gépen akarom megnézni, akkor csak a szöveges részét tölti be, össze-vissza tördelve. - Azon a gépen amelyen készült, tökéletesen működik. -Próbáltam Wamp serveren is, a probléma ugyanaz. Ötlet?
-
Sk8erPeter
nagyúr
válasz
Tele von Zsinór #13078 üzenetére
Jó is, hogy jelezted.
Na igen, a placeholderek használata is jóval elegánsabb megoldás. -
Tele von Zsinór
őstag
válasz
Sk8erPeter #13074 üzenetére
És ez így teljesen jogos, csak arra akartam rámutatni, hogy a mai php-ben már nincs mérhető diff a két megoldás közt.
Egyébként az elrejtett változókat én sem szeretem. Ha bekerül, akkor minimum a {$var} jelölés, ha sok változó kerül bele, akkor pedig sprintf()-et használok.
-
#68216320
törölt tag
válasz
fordfairlane #13076 üzenetére
Ez nagyon jo hir, mert meguszok egy ujabb if-else-t. Koszonom.
-
#68216320
törölt tag
Tudtok arról valamit, hogy mindegyik PHP verzióban egyformán működik a következő:
if( isset($tomb['valami']) && $tomb['valami']==123 ) {
print('hello');
}Arra gondolok tehát, hogy az ÉS kapcsolatnál, ha az első tag hamis kiértékeli-e a másodikat azért?
Azért érdekelne mert C/C++ fordítóknál futottam bele ilyen hibába és most is van Notice hibám, amit ilyen módon könnyen tudnék korrigálni. Feltéve, ha minden verzióban az első tag hamis eredménye után nem vizsgál tovább. -
Sk8erPeter
nagyúr
válasz
Tele von Zsinór #13069 üzenetére
Értem, ettől függetlenül viszont szerintem érdemes elkerülni az idézőjel használatát tömbindexeléskor, és lehetőleg egyéb esetekben is - természetesen ez pusztán szubjektív megítélés, de én rendkívül olvashatatlannak tartom a stringben "elrejtett" változók használatát a konkatenálás helyett.
Szóval szerintem PHP-ben idézőjel helyett aposztróf. -
Soak
veterán
válasz
Tele von Zsinór #13069 üzenetére
egy mítosz
Most már. Mint látható az általad linkelt cikk első hozzászólásából is, korábbi verziókban még volt különbség, valószínűleg csak nem tudatosult azóta az emberekben a változás.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #13055 üzenetére
Az aposztróf vs. idézőjel sebességkülönbség egy mítosz - ha nincs benne változó, nincs mérhető differencia a kettő közt. Lást például ezt az írást az egyik php core fejlesztő tollából.
-
#68216320
törölt tag
válasz
fordfairlane #13067 üzenetére
Teljesen érthető, köszönöm.
Más (ismét):
Küzdök a .htaccess rewrite funkciójával, hogy az úgynevezett szép URL-t megcsináljam. Már használom úgy-ahogy, de érdekelne, hogy ti milyen technikával oldanátok meg.
A jelenlegi .htaccess-em így néz ki:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteOptions MaxRedirects=10
RewriteRule \.(ico|js|css|gif|jpe?g|png)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?parameter=$1 [L,QSA]
</IfModule>Az véleményetek szerint mennyire jó megoldás, hogy a $_GET['parameter'] tömbömet figyelem és ha van benne érték akkor:
$tagok = explode('/',$_GET['parameter']);
foreach($tagok as $tag)
if($tag != '')
$params[] = $tag; -
fordfairlane
veterán
válasz
#68216320 #13052 üzenetére
Mégis egyre több helyen látom csak simán beírva a kulcsot.
A PHP a tömb indexelése során a jelöletlen (idézőjeltelen) karaktersorozatot stringgé konvertálja, amennyiben nincs ilyen nevű konstans. Ha viszont létezik, mert a script, vagy a PHP a jövőben definiál egy ilyen nevűt, abban a pillanatban megváltozhat a program viselkedése. Ezért kerülendő a $valami[kulcsindex] forma használata, amennyiben kulcsindex egy stringkulcs, nem pedig egy konstans.
-
cucka
addikt
válasz
#68216320 #13062 üzenetére
Igen, ini_set, amennyiben nincs kikapcsolva a szerveren.
Változót értékadás nélkül nem tudsz létrehozni.(#13064) tildy
altalaban mondjuk nem kell, de ha fuggvenyt irsz, neha erdemes odairni, milyen bemeneti paramot varsz
Jó ötlet, sajnos primitív típusokra ez nem működik. -
tildy
nagyúr
Esetleg int eseten megadhato a tipus is ( altalaban mondjuk nem kell, de ha fuggvenyt irsz, neha erdemes odairni, milyen bemeneti paramot varsz) :
$var = (int) 0;The casts allowed are:
(int), (integer) - cast to integer
(bool), (boolean) - cast to boolean
(float), (double), (real) - cast to float
(string) - cast to string
(array) - cast to array
(object) - cast to object
(unset) - cast to NULL (PHP 5) -
#68216320
törölt tag
válasz
Sk8erPeter #13061 üzenetére
A tárhelyen, amit használok, ott minden log fájlba kerül. De ott is csak az error-ok, notice nem. Ha megprobálom PHP-n belül bekapcsolni, akkor az ini_set() fog kelleni nekem hozzá? Mert szeretnék notice-t is kapni a log fájlba. Az a helyzet, hogy eddig folyton enélkül dolgoztam és sok hibát ejtettem, amiket javítanék és sokat is tanulnék belőle.
Más: Bocsánat a nagyon amatőr kérdésért, de hogyan tudok változót létrehozni értékadás nélkül?
Azért kellene, mert rögtön egy ciklus ad hozzá/fűz hozzá értéket. Viszont a notice szól pl. a .= miatt, mert még nem létezik a változó. Gondolom a += miatt is szólna. Ilyesmi, hogy unsigned int szam; itt nem működne? Ha igen string esetén hogyan tudom megoldani?És természetesen köszönöm a segítőkészségeteket eddig is.
-
Sk8erPeter
nagyúr
válasz
#68216320 #13058 üzenetére
Jól csináltad, ez localhoston, fejlesztői környezetben nyugodtan maradhat így. Ahogy tildy is mondta, arra viszont figyelj, hogy a notice-ok kijelzését viszont nem szabad úgy hagyni éles környezetben, ott, ahol már külső szemlélők olyan információkat is láthatnának ezáltal, amit nem szabadna (értsd: egy rossz szándékú illetőnek minden plusz információ csak további segítség). Éles környezetben is el kell azonban kapni minden hibát, azokat naplózni, és a felhasználónak csak "felhasználóbarát hibaüzenetet" megmutatni. (Pl. a felhasználó ne tudja, a kód hányadik sorában lett valami elrontva, vagy konkrétan mi volt a hiba.)
-
tildy
nagyúr
válasz
#68216320 #13056 üzenetére
Ahh, oke, altalanossagban irtam.
A PHP amikor elkezdtek fejleszteni anno, nagyon mas volt a normal tipusos , kotott nyelvektol. Ez sok esetben lehet epp elony, de sokszor hatrany is.
Ma ahogy latom , azert mar megy a coding standard itt is. Nem dob hibat a PHP persze, pont a fentiekbol fakadoan amugy.Ha ilyen coding style warningot akarsz kapni, hasznalj codesniffert. Mi PSR2-re nezzuk.
-
#68216320
törölt tag
Mivel asszociatív így a numerikus ki is zárható gondolom. Természetesen normál, egyszeres aposztróf ( ' ) a megfelelő. Csak nem értem miért találkozok sok kódban ennek a hiányával. Nem dob hibát a PHP, de valahogy fura. Na mind1. A net tele van furcsa dolgokkal
Sk8erPeter: Aha, csak azokat nem látom. Hogy lehet teljes error reportot kapni? Tehát gondolok itt arra, hogy nem csak azokat a hibaüzeneteket, amitől nem fut a program, hanem a warning-okat is. Mint pl. C++ fordítóknál. Sajnos szerintem néhány helyen ugyanis másolás miatt nálam is aposztróf nélkül lehet a key.
-
Sk8erPeter
nagyúr
válasz
#68216320 #13052 üzenetére
Semennyire nem elfogadott, és nem helyes, mert notice-t kapsz, ha úgy használod.
(#13054) Speeedfire :
úgy is megy, de valamelyest lassabb lehet a változó-behelyettesítések (vizsgálata) miatt.
Szóval tényleg érdemes aposztrófot használni, mondjuk ha változóval kell konkatenálni, úgy is jobb szerintem olvashatóság szempontjából. -
#68216320
törölt tag
Urak.
Mennyire elfogadott/helyes egy asszociatív tömb kulcsának a $valami[kulcsindex] külalak?
Úgy tudom aposztrófok között illik használni, így: $valami['kulcsindex']
Mégis egyre több helyen látom csak simán beírva a kulcsot. -
Soak
veterán
válasz
Speeedfire #13050 üzenetére
Ahogy rt06 írta, valószínűleg nfs-t használnak (mint általában minden hasonló vállalkozás) .
-
rt06
veterán
válasz
Speeedfire #13040 üzenetére
itt mi a konkret kerdes?
hogy miert, vagy hogy hogyan?
utobbi megoldhato, az ext4-et ugyanis lehet futas kozben is atmeretezni (novelni lehet a meretet, csokkenteni nem), vagy meg egyszerubben lehet, hogy nfs-t hasznalnak, igy a rendszeredtol teljesen fuggetlenul tudjak azt piszkalni -
válasz
Speeedfire #13046 üzenetére
Az oké, de akkor szerintem nem ilyen csomagot veszel (memória méretére gondolok elsősorban), ott meg már ugye többet is engednek.
-
válasz
Speeedfire #13044 üzenetére
És mit szeretnél csinálni, amire 1TB nem elég?
-
válasz
Speeedfire #13042 üzenetére
Mellé nem is olcsó: [link]
-
CSorBA
őstag
válasz
Speeedfire #13040 üzenetére
Nekem is volt ilyen tárhelyem, amcsiban, azért váltottam róla, mert messze volt, és megérződött. Amúgy tényleg azt raktál rá amit akartál, csak archiválást figyelték. Szóval azért 20gigás csomagolt fájlokat nem szerették
De lehetetlen feltölteni, mert van havi adatforgalmi korlát, és abba fogsz beleütközni.
-
Speeedfire
félisten
Ez a vps csak nekem fura vagy...?
[link]
Egy vps-nél minek írja oda ezeket az adatokat? Tárhely unlimited? Az hogyan? -
rt06
veterán
válasz
Speeedfire #13037 üzenetére
pgadmin (ha jol ertem a kerdest)
-
Speeedfire
félisten
Windows környezetben milyen PostgreSQL programot ajánlotok wamp mellé?
-
Siriusb
veterán
válasz
Speeedfire #13033 üzenetére
Options/Editor/Formatting -> Expand Tabs to Spaces
-
oleslie
aktív tag
válasz
Speeedfire #13031 üzenetére
Nem szolgáltatói oldalon volt a probléma, hanem a fogadónál. Azt, hogy jól van e összerakva a levél, ki tudom deríteni saját hatáskörben (saját rencer, exim, dovecot, spamassasin).
Kliensoldalon borultak meg a dolgok. Ha utf8 ban csináltam, a M$ levelezőit leszámítva mindenhol jó volt, ha win1250/latin2 -ben, akkor bár jó lett az M$-nek, cserébe baxakodott a többi. Ezt megunva ejtettem a phpmailer-t, és oldottam meg saját hatáskörben a problémát. -
Speeedfire
félisten
Be lehet állítani valahol a netbeans-ben, hogy a tab helyett ne 4db space-t rakjon? Vagy ha enter-t ütök, akkor az új sorban tab legyen, ne space?
-
Dave-11
tag
válasz
Tele von Zsinór #13024 üzenetére
Eddig is úgy dolgoztam, hogy az execute()-nál a placeholdernél ott volt a kettőspont. De most kipróbáltam nélküle, és ugyanaz az eredmény, a táblába 0-t rak be az option value-ja helyett :/
OMFG!!! De egy láma vagyok, a táblában nem varchar volt beállítva, hanem int
-
oleslie
aktív tag
válasz
Speeedfire #13029 üzenetére
hüm ... az ölég érdekes.
Én a phpmailer-t cseréltem le a mail() -ra
Valamiért nem tudtam vele úgy levelet küldeni, hogy mindenhol (utf8 + webmail/kmail/kitekintő/etc.) helyesen jelenjen meg amit küldök (tárgy+tartalom), ill. ne érzékelje spam-nak. -
oleslie
aktív tag
válasz
Speeedfire #13026 üzenetére
Mert a választ az SMTP szervertől kapod, az pedig 'átvette' küldésre. Azt nem ellenőrzi, hogy a cél létezik/elérhető/sikerült e a kézbesíteni. Ezt csak úgy tudod megoldani, ha saját SMTPD használsz php-ból.
Most korán van a böngészőelőzményekben való turkáláshoz.
Ha türelmetlen vagy, akkor gugli| php smtpdupdate: ez sem megoldás minden esetre. Előfordul (az enyém is így működik), hogy ha a domain lézetik, 'átveszi' a levelet, attól függetlenül, hogy a fiók létezik e. HA nem sikerül, megpróbálja 3 óránként kézbesíteni. HA ez 24 óra alatt nem sikerül, akkor küldi a választ a @reply-to -ra vagy @from -ra, hogy a címzett nem létezik.
-
válasz
Speeedfire #13026 üzenetére
[link] → "Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise." Ebből én azt veszem ki, hogy azt nem ellenőrzi, hogy sikeres volt-e a küldés.
-
Speeedfire
félisten
Az mitől lehet, hogy a php mail függvény true értékkel tér vissza, de levelet nem küld mégsem?
-
rt06
veterán
válasz
Tele von Zsinór #13024 üzenetére
be van pipalva, hogy figyelje a reference-eket, de ennek csak annyi a hatasa, hogy lassabban csinalja
-
Tele von Zsinór
őstag
Fastruktúrában mozgatást nem használtam még, egy-egy filet többször neveztem át Shift+F6-tal, akkor átírta, ahol az volt require()-ölve. Az átnevezős ablakban lehet pipálni, hogy nézze-e, hol van használva, nézd meg, ez hogy állt nálad.
Dave-11: az execute() hívásnál ne tegyél kettőspontot a placeholder neve elé.
-
rt06
veterán
hogy ne erhesse szo a haz elejet (mert volt egy olyan erzesem, hogy az elozo post errol akart szolni), megneztem phpstorm-ban a manual alapjan, dnd nelkul, szepen jobbklikk->refactor->move, ugy sem mukodik
bar valamit probal csinalni, mert az adott sor (amiben a require_once van) formazasa megvaltozik, kivesz par szokot, de az utvonalat nem irja at
-
-
Speeedfire
félisten
Miért van az, hogy a git megeszi a gépemet?
Kb ~5GB van az adott mappában, de a legtöbbet kihagyja, mert az nem kell a projektbe.
Kiadtam a git add ., git commit, git push origin parancsokat és így is van ~1800 fájl, amit tömörít. -
Dave-11
tag
Van egy formom:
<form name="form" method="post" action="">
<select name="kaja">
<option value="alma">Alma</option>
<option value="szendvics">Szendvics</option>
<option value="csoki">Csoki</option>
</select>
<input type="submit" name="gomb" value="Küldés"/>
</form>
És azt szeretném, hogy a kiválasztott kaját illessze bele egy adatbázisba. Erre van egy PDO-s megoldás:
$q = $db->prepare("INSERT INTO etel (kaja) VALUES :kaja");
$q->execute(array(":kaja" => $_POST["kaja"]));
De valamiért nem rakja be a select-es adatokat, helyette csak egy 0-t látok az adatbázisban :/ -
Tele von Zsinór
őstag
A phpstorm az elsőt biztosan tudja, úgy emlékszem, a másodikat is. Úgy nézem, a harmadikat is.
-
rt06
veterán
tudnatok olyan ide-t ajanlani, ami kepes az alabbiakra?
- lekovetni a file atnevezeseket, athelyezeseket, es ennek megfeleloen modositani az include-okat, require-oket
- osztaly atnevezese eseten modositani annak peldanyositasait
- call hierarcy-t mutatni (foleg azt, hogy adott fuggvenyt mi, hol hiv meg) -
Remélem tudtok segítein. Van egy oldal, amiben a tartalomban span-ban, p-ben, divben, th,td,ben lévő szövegeket ki kell cserélem linkre. Ezt hogyan tudom megcsinálni. Most jelenleg preg_replace-t használok de img-ben meg a-ban is cserél aminek következtében szétesik az oldal a hibás html miatt
-
cucka
addikt
válasz
Sk8erPeter #13008 üzenetére
Jókat írsz, egy apróság kivételével: a manafrissítés tekinthető egy tranzakciónak, ami a következő elemekből áll:
- dátum kiolvasása
- dátum ellenőrzése/összehasonlítása
- mana frissítése, ha szükséges
A lock a tranzakció elején jön létre és a végén szűnik meg. Tehát írási művelet híján sem fogod tudni kikerülni a lock létrehozását és törlését, így a megoldásod overhead-je ígyis-úgyis a request-ek számával lesz arányban.A lock természetesen akkor is szükséges, ha cront futtatsz, az előny abban áll, hogy az, hogy hányszor fut le a szkript egy konstans és nem függ semmilyen más külső tényezőtől (pl. a http requestek számától)
-
Sk8erPeter
nagyúr
válasz
oleslie #13004 üzenetére
Ezt a reakciót most nem egészen értettem, annyira nem nagy elvárás egy osztott tárhelyen sem, hogy legyen cron-futtatási lehetőség, manapság olcsó tárhelyeknél is jellemző, hogy be lehet állítani időzítetten lefuttatott scriptet pl. egy cPaneles felületen, pár kattintással.
(#12994) Soak :
jah, most esett le, hogy ezt mire mondtad, hogy 1 perc a legkisebb egység, OK, sorry, félreértettelek, igazából csak a lényeget néztem be, hogy cucka 30 másodpercet írt, nem pedig percet, pedig még idéztem is.
Lehetséges megoldás az egyszerűek közül. -
Sk8erPeter
nagyúr
Először is: nyugi, tudtommal egyelőre csak a lehetőségekről és miértekről beszélgetünk, és nem én akarom így vagy úgy megoldani, mert engem nem érint, hanem visszakérdeztem, hogy támaszd alá picit jobban, amit mondtál, mert érdekelt, de a hsz.-ed végére kissé behergelted magad.
"Először is szögezzük le, hogy alapnak veszem, hogy egy játéknál nem oldal újratöltéssel oldjuk meg a kliensoldali frissítéseket, hanem ajax-al."
Őő, ja, de ez nyilvánvaló, szerintem erről nem is érdemes témázni, mivel evidens.Amit viszont én szögeznék le előre a félreértések elkerülése érdekében, mert fontos, hogy alapvetően én is jobbnak látom a cronos megoldást, valszeg én is azzal csinálnám, ha én lennék a fejlesztője, mivel ütemezett feladatra használjunk ütemezőt, végül is pont arra való. Tehát én nem a cron ellen beszélek, hanem érdekes témának láttam megvizsgálni a másik oldal lehetőségeit is, ha már felvetették a többiek, hogy meg lehetne oldani anélkül is, tehát azt is érdemes megbeszélni, hogy mi történne abban az esetben, ha NEM cronnal történne a dolog. Én pedig csak azokra a dolgokra reagálok/kérdezek rá, amik esetleg elsőre teljesen egzakt fogalmazás híján (számomra) kérdésesek lehetnek (vagy legalábbis engem érdekelnek). Oké?
Úghogy az "ezt az egész baromságot pusztán azért, mert valamilyen hülye okból kifolyólag nem vagy hajlandó arra, hogy az ütemezett feladatot a pontosan erre a célra kitalált feladatütemezővel futtasd" (kicsit behergelődött) mondatot nem vettem magamra, mert nem rám vonatkozik.Lock-okra:
Igazából direkt előre kihangsúlyoztam, hogy elsősorban magára az ellenőrzésre kérdeztem rá, nem pedig az írási műveletekkel kapcsolatos aggályaidra, mert mint említettem vala, az még érthető is, de nekem úgy tűnt, hogy a lock-ok emlegetése kapcsán Te rátapadtál kőkeményen az írás-témára. De aztán utána meg simán az ellenőrzés-téma kapcsán is azt emlegetted, hogy a többiek várni fognak az erőforrásokra. Most szűkítsük le a kört simán arra, hogy kiolvasod az értéket ÉS az utsó módosítás dátumát, majd utóbbinál még egy összehasonlítást is végzel az aktuális dátummal, megnézed, amúgy mi a pálya, kéne-e frissíteni. Akkor itt még ne vegyük azt, hogy mi van, ha igen (akkor növelni kéne) - ebben az esetben ugye Te sem arra gondoltál, hogy írási művelet híján drasztikusan csökken a szerver teljesítménye nagy felhasználószám esetén?
Egyébként az ütemezett scriptben feltételezem, nem árt ellenőrizni, hogy a júzer épp online-e, mert ha offline, akkor gondolom nem kéne növelni a mannáját, szóval akkor a böngészőből való kilépés esetén küldeni kéne egy requestet a szerver felé, hogy na cső, akkor távoztam, azt meg beírni adatbázisba, hogy most már nincs szükség buzerálásra az adott júzernél.
Mondjuk jobb lenne ismerni jobban egy ilyen játék működését, én ilyeneket nem szoktam tolni (kinek van ilyenre ideje?), úgy kicsit könnyebb lenne beszélni az elméleti lehetőségekről.
===
(#12995) Tele von Zsinór :
na ja, ez az ütemezős dolog jó példa, alapvetően ez így tök jogos. De tényleg jobban kéne ismerni egy ilyen játék működési elvét, mert konkrét implementációt nem tudok, csak sejtéseim vannak róla. -
cucka
addikt
válasz
lordjancso #13003 üzenetére
Az ütemezett feladatot feladatütemezővel futtatjuk, mert egyrészt pont erre találták ki, másrészt mert ez megkímél egy csomó jövőbeli problémától. Semmilyen komoly érv nem szól amellett, hogy ne így tegyük, különösen annak fényében, hogy az alkalmazáslogika lényegében ugyanaz bármilyen esetben. Ha gondoljátok, akkor fűrészelhetitek a fingot ebben a témában tovább, én kiszállok.
(#13004) oleslie
Egy valamire való hosting szolgáltatónál az ütemezett feladatok futtatása megoldható. Nyilván nem fogod megengedni a júzernek, hogy turkálja a crontab-ot, de vannak erre UI eszközök, vagy megoldhatja egyedi kérésre a rendszergazda, teljesen mindegy.
(És ha szar a kód és beakasztja a szervert, akkor teljesen mindegy, hogy az cron-ból futtatva vagy http request következményeként fogja beakasztani.) -
Soak
veterán
Nem értem miért vagy igy rápörögve a lock-ra . Ugyan megint csak találgatok, de gondolom a játék nem úgy néz ki jellemzően, hogy 1 embert támad 50.000 . Innentől kezdve (még ha lock-olnánk is, de azzal eddig magyaráztam, nem kell) InnoDB motor row-level lock-nál miért olyan nagy probléma ha lockolunk egy sort? Ha még egyszerre 3-5 ember akarja elérni (nem értem hogy miért updatelné egyszerre 3-5, de ugye találgatunk csak) akkor se lenne dráma.
-
Soak
veterán
válasz
Tele von Zsinór #12995 üzenetére
Én épp ezért írtam, hogy adatbázisba csak akkor írjunk ha a user csinált valamit. Addig csak meg kell jeleniteni, ezért nem kell lock, meg semmi, ezért irtam, hogy egy matematikai müvelettel megjelenitjük, utána meg ha esetleg varázsolt egyet akkor beírunk.
Szerk : Azért egy pontosabb sepcifikációt szivesen meghallgatnék, mert egyelőre 5-6an játszünk elméleti fizikust
-
oleslie
aktív tag
>Ahol nem elérhető a cron, azok a kétpálcás php webhosting megoldások....
Értem, tehát a rendelkezésre állás. Az, hogy a szerver soha nem kerül 100% leterhelt állapotba lóf*sz.
cron legyen, ez a fontosch, különben kétpálcás?
kicsit reklámozom magam.
Több mint 2 év alatt (2,5 HJE) 2x indítottam újra a szervert. Egyszer ram bővítés, másodjára kernel frissítés miatt. A szokásos (web, levelezés, mysql) mellett futnak játékszerverek is. És ennek ellenére soha nem volt gondom. Azért lennék sufnihosting (kétpálcás?), mert TE nem tudsz önállóan beállítani bármilyen elcseszett scriptet, ami esetleg problémát okozna? Nemhiszem
stat -
lordjancso
senior tag
Részben egyetértek veled akkor, ha a manát "globálisan" láthatóvá teszi a fejlesztő az oldalon. Tehát mondjuk meg lehet nézni a játékosok adatlapját és ott valós mana értéket szeretnél látni (persze itt is meg lehet kerülni a cron-t). Én így képzeltem el a játékát:
A belépett játékos csak a saját manájával van elfoglalva, csak azt látja, semmilyen körülmények között nem tudhatja, hogy mennyi manája van az ellenségnek vagy a többi játékosnak.
Így elég csak belépéskor ellenőrizni, hogy a legutóbbi manahasználat óta mennyi idő telt el, majd megjelenítés előtt megnövelni a mana értékét a kiszámolt mennyiséggel.
Minden manahasználatkor logolod annak az idejét. Minden manamegjelenéskor elvégzed a vizsgálatot, hogy mennyi idő telt el és mennyivel kell megnövelned a manádat (ez jól megírt játéknál ez nagyon egyszerűen kivitelezhető).Ha lehet látni a másik manáját (mondjuk adatlapon keresztül), akkor is elég csak az adott (éppen nézett) játékos manáját vizsgálni és updatelni.
Szerintem ez lenne a leginkább erőforráshatékony megoldás, mert így egy, maximum kettő játékos manáját kell számolgatni. Főleg ha van sok tíz-százezer játékosod.
Persze a cron is jó dolog, abszolút nem vagyok ellene, én is használom napi szinten, de csak akkor, ha valóban indokolt. Ebben az esetben én nem tartanám annak (értsd, nem cron-nal csinálnám a fejlesztő helyében).
-
oleslie
aktív tag
ok. pontatlan volt a megfogalmazás.
Nem mindenhol tudsz beállítani cronjob -ot.
Az, hogy a cron (vagy ablakOS -en a megfelelője) elérhető e a rendszeren, nem kérdéses. De az, hogy TE, mint felhasználó, hozzáférsz e, már igen.
Valamint: fölösleges bonyolítani az oldalt egy ily módon időzített scripttel, miközben az adatbáziskezelővel kényelmesen, és nem utolsó sorban gyorsabban, kevesebb erőforrást felhasználva meg lehet oldani a feladatot.
Az erőforrásigény téged valószínűleg addig nem fog érdekelni, amíg nem töltesz fel vmilyen hibás scriptet cronra, azzal túlterheled a szervert (láttam már ilyet), amit annak az üzemeltetője úgy old meg, hogy törli a problémás dolgokat, TE pedig old meg ahogy tudod (csináltam már ilyet). -
cucka
addikt
válasz
Sk8erPeter #12993 üzenetére
Először is szögezzük le, hogy alapnak veszem, hogy egy játéknál nem oldal újratöltéssel oldjuk meg a kliensoldali frissítéseket, hanem ajax-al. Játékról van szó, tehát rengeteg request-el lehet számolni.
A dátum kiolvasása, összehasonlítása és az új mana érték beírása valóban nem erőforrás-igényes, viszont:
- Távolról sem nevezhető atomi műveletnek, tehát valamilyen lock-ot kell használj, ami viszont nagyon is erőforrás igényes. (Leginkább azért, mert az összes többi folyamat, ami ugyanazt az erőforrást használja, várni fog a lock miatt)
- Ahhoz, hogy a kliens nézőpontjából a mana érték frissítése úgy tűnjön, mint egy ütemezett feladat, minden egyes request-nél az összes játékos manáját ellenőrizni kell és frissíteni. Ez az összes olyan requset-re igaz, ahol a mana szerepel az adatok között. Felszorzod az ellenőrzés időigényét a játékosok magas számával, hozzáveszed, hogy elég sok request lesz, majd hozzáteszed, hogy minden egyes ellenőrzésnél lockolod az erőforrást, amire a többi request várni fog.Az eredmény az lesz, hogy beraktál egy k*rvanagy aknát a forráskódodba, ami akkor fog robbanni, amikor a júzereid száma elkezd nőni. A rendszered szép egyenletesen fog skálázódni egészen addig, amíg a request-ek száma túl kicsi ahhoz, hogy a lock komoly fennakadást okozzon, efölött pedig hirtelen és drasztikusan fog lecsökkenni a teljesítménye.
Ja, és ezt az egész baromságot pusztán azért, mert valamilyen hülye okból kifolyólag nem vagy hajlandó arra, hogy az ütemezett feladatot a pontosan erre a célra kitalált feladatütemezővel futtasd. Most komolyan, ez miért éri meg bárkinek?
(#12997) oleslie
Miért kell túlbonyolítani cron-al, ami nem mindenhol elérhető?
A cron mindenhol elérhető. Linuxon, Unixon, OSX-en mind alapból ott van, Windows-on szintén, csak ott máshogy hívják.
Ahol nem elérhető a cron, azok a kétpálcás php webhosting megoldások, de hadd ne ez legyen a mérce.
Új hozzászólás Aktív témák
Hirdetés
- Vezetékes FEJhallgatók
- Autós topik
- Medence topik
- Hegesztés topic
- sziku69: Fűzzük össze a szavakat :)
- Samsung Galaxy Watch7 - kötelező kör
- Házimozi belépő szinten
- Mielőbb díjat rakatnának a görögök az olcsó csomagokra az EU-ban
- Vigneau interaktív lokálblogja
- Milyen légkondit a lakásba?
- További aktív témák...
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest