Mező érték generálás egy másik mező alapján

hszilard képe

Jelenlegi tudásommal biztos nagy fába vágtam a fejszém, de a következő problémám szeretném megoldani:
Van egy tartalomtípusom (cégek), amiben van egy sereg mező, többek között az adott cég postacíme a következő mezőkkel: megye, irányítószám, település, utca.
Amit szeretnék, az az, hogy a megye mezőt ne kelljen explicit megadnom, hanem a tartalom mentésekor az irányítószám alapján tegye bele a megfelelő értéket. Pl. ha az irányítószám 3600, akkor Borsod-Abaúj-Zemplén, stb.
Ehhez szeretnék egy modulocskát gyártani. Milyen hook függvény(eke)t kell ehhez felhasználni?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
gazsesz képe

Nekem úgy rémlik, hogy erre már valaki itt már csinált egy drupal kompatibilis megoldást, városok, megyékre.

Ha még sincs igazam, akkor a hierarchical select környékén néznék körbe, vagy a field reference https://drupal.org/project/field_reference tájékán olvasgatnék.

Sőt itt még tán' megoldás is van: http://drupal.stackexchange.com/questions/68215/automatically-fill-in-ci...

1
0

Gazsesz

hszilard képe

Köszönöm Gazsesz, a második link egész ígéretes, azt hiszem, abból el tudok indulni.
A posztolásom után én is találtam itt ebben a témában:
http://drupal.hu/forum/regisztr%C3%A1ci%C3%B3kor-automatikus-v%C3%A1ros-...

0
0
aboros képe

https://drupal.org/project/addressfield_hu
tudja azt is, hogy beírom az irányítószámot, kitölti a várost. meg fordítva is tudja. nagyon kis kezes.

11
0

-
clear: both;

hszilard képe

Jé, ez hogy kerülte el eddig a figyelmemet? Ha tényleg azt tudja, ami a leírásban szerepel, akkor nem is keresek tovább, pont erre van szükségem! Köszönöm.

1
0
hszilard képe

A hook_form_alter függvény használatával megoldható a problémám?

0
0
hszilard képe

Sikerült összehoznom egy kis modult a problémámra, ami működni látszik:

  1. function automegye_form_alter(&$form, &$form_state, $form_id) {
  2.  
  3. if($form_id=="munkahelyek_node_form") {
  4.  
  5. $form['#validate'][] = 'automegye_validate';
  6. }
  7. }
  8.  
  9. function automegye_validate($form, &$form_state) {
  10.  
  11. $current_megye=$form_state["values"]["field_mh_posta_megye"]['und'][0]['value'];
  12. $current_irsz=$form_state["values"]["field_mh_posta_iranyitoszam"]['und'][0]['value'];
  13.  
  14. if(strlen($current_megye)===0) { // csak ha üresen hagyjuk a mezőt...
  15.  
  16. /* itt jön egy nagy tömb, ami az irányítószámokat megyékhez rendeli */
  17. $megyeirsz=array('Budapest' => array(1011, 1012, ....),
  18. 'Bács-Kiskun' => array(6034, 6035, 6042, ....),
  19. 'Borsod-Abaúj-Zemplén' => array(......),
  20. .....
  21. );
  22. $got_megye='';
  23. foreach($megyeirsz as $mkey =>$mvalue) if(in_array($current_irsz,$mvalue)) $got_megye=$mkey;
  24.  
  25. if($got_megye!='') { // ha van találat...
  26.  
  27. $field['#parents'] = array('field_mh_posta_megye', 'und', 0, 'value');
  28. form_set_value($field, $got_megye, $form_state);
  29. }
  30. }
  31. }
2
-3
Sk8erPeter képe

Nem akarlak elkeseríteni, de ez nem megoldás, hanem tákolmány a köbön.

Hadd idézzek a kódodból:

  1. /* itt jön egy nagy tömb, ami az irányítószámokat megyékhez rendeli */
  2. $megyeirsz=array('Budapest' => array(1011, 1012, ....),
  3. 'Bács-Kiskun' => array(6034, 6035, 6042, ....),
  4. 'Borsod-Abaúj-Zemplén' => array(......),
  5. .....
  6. );

Ez most komoly? :D
Egy gigantikus tömböt okádsz bele a PHP-kódodba, Magyarország összes lehetséges megyéhez tartozó lehetséges irányítószámával? Ez rettentő elvetemült megoldás.
Lehet, hogy ez új, de pontosan erre való az adatbázis: nagy (vagy akár kicsi) adatmennyiség tárolására, és abban való, több szempont szerinti, lehetőleg hatékony keresgélésre.

A korábban aboros által javasolt addressfield_hu adatbázist is használ, ahogy kell, nem is értem, végül miért nem a modul által feltöltött adatokat, és az általa kínált megoldást használod.
Röviden: ha már ilyen módon validálsz, akkor használj adatbázist; ezenkívül nézd át jobban a korábban javasolt modult, hogy nem tudod-e vele értelmesen párosítani a saját modulodat.

Ezenkívül ha adhatok további tanácsot a kóddal kapcsolatban: döntsd el, hogy magyarul kódolsz, vagy angolul. Inkább utóbbit válaszd, a programozás nyelve NEM a magyar. De a hibrid megoldások különösen rettentő bénák tudnak lenni, például a $current_megye, $current_irsz, $got_megye változónevek kínosan esetlenek.

3
-3
pp képe

  1. A téma indítója megoldásnak minősítette az itt látható kódot.
  2. Használja, és jól használja a Drupal API-t.
  3. Nincsenek benne biztonsági problémák.

Természetesen, ha már kód lehetett volna szebben is kitalálni, hogy melyik megyében van az adott irányítószám. :D

0
0
hszilard képe

Bocsánat, ha a kódom arra ragadtatott, hogy az éjszaka közepén billentyűzetet ragadj, bejelentkezz és írj 5 bekezdésnyi vegytiszta fikázást, a konstruktív segítség halvány szikrája nélkül.
Ja, és az érveid nettó butaságok.

0
-5
Sk8erPeter képe

@pp:

Miért ne lenne megoldás?
[...]
A téma indítója megoldásnak minősítette az itt látható kódot.

Ez mit bizonyít? Hogy az jó? :) Hogy akkor nem is szabad szólni, ha az igencsak hibás, legyintsünk egyet, hogy áhh, úgyis mindegy, úgysem a saját szerverünkön fut? :) Tényleg ez lenne itt a jó "magatartás"? Egy feladatra akár végtelen megoldás is létezhet, ez tény, és végül is biztos az ő kódja is elvégzi a feladatot, és biztos lehetne csúfabban is. De ha már egy közösség vagyunk, szóljunk már egymásnak, ha valaki rosszul csinálja a dolgát. Én legalábbis biztosan örülnék, ha valaki inkább beszólna, ha tényleg rosszul csinálom, mintha legyintene egyet az egészre.

Használja, és jól használja a Drupal API-t.
Nincsenek benne biztonsági problémák.

Ezekkel nem is lehet vitatkozni, ezek tények. Az valóban remek, hogy ezek egyikében se hibázik (és?), de a felvetésemben nem is az ezekkel való bármilyen problémára hívtam fel a figyelmet. A Drupal API használatával nyugodtan elvégezhetne egy helyes adatbázis-lekérést is. Meg a Drupal API használatával is lehet gányolni, az nem ment meg önmagában semmitől.
Egyébként nem rosszindulatúságból "szóltam be", hanem azért, mert zavart, hogy rossz megoldást alkalmaz, és úgy voltam vele, hogy hátha segít neki, ha szólnak a hibája miatt. Az más kérdés, hogy sértődés lett belőle, bár a sértés nem állt szándékomban. :)

Na de mindenféle rossz szándék nélkül hadd kérdezzek vissza: szerinted az jó megoldás, hogy a PHP-kódjába belenyomja egy adatbázis tartalmát, konkrétan egy gigantikus tömbbe, és validáláskor minden alkalommal végigszalad ezen az egész tömbön? (Azt hiszem, Stack Overflow-n például a szavazásokból gyorsan meg lehetne ítélni. :P)
Szerintem nem, de nyitott vagyok a szakmai polémiára. :)

===========================================================

@hszilard :

Ja, és az érveid nettó butaságok.

Köszönöm szépen, hogy ilyen jól alátámasztottad ezt az állításodat. :D Ja, várjunk csak, mégsem. :D Pont ez a különbség kettőnk hozzászólása között, hogy én megpróbáltam segítőkészen - még ha nem is pátyolgatva - érvelni amellett, hogy mi a gáz a kódoddal, te meg csak szimplán elég alpári módon butaságnak minősítetted a tanácsokat, mindenfajta indokolás nélkül. Rendkívül meggyőző és szimpatikus... :) Remélem, általában azért nem így intézed el a vitáidat.
Amúgy én kérek elnézést, hogy akár egy percig is foglalkoztam a kódoddal, valóban hiba volt. :)
Kifejtenéd, hogy konkrétan mi benne a "butaság"? Tényleg érdekelne, hogy szakmailag, most kivételesen személyeskedés nélkül mivel támasztod alá, amit írtál. Melyik része nem stimmel szerinted? Az, hogy ilyen mennyiségű adat tárolására, előkotrására adatbázist illik használni? Az, hogy a programozásban nem jó gyakorlat a nyelvek kutyulása pl. változó-, osztály-, függvény- és metódusneveknél (vagy egyebeknél)? Ne kímélj, én nyitott vagyok ÉRTELMES vitára! :)

Lehet, hogy a kerek perec kimondása annak, amit gondoltam, offenzíven hangzott, bár nem annak szántam, de én is voltam kezdő, és engem sem kezeltek sosem porcelánbabaként, és nem is vártam el soha, hogy némi ugyulubugyulu köntösbe becsomagolva, óvatoskodva suttogják el, ha valamit rosszul csinálok. Mindig jól jöttek a kiigazító, akár oltós megjegyzések is, még ha adott pillanatban meg is ütköztem rajta, de legalább valaki felhívta rá a figyelmemet, hogy valamit rosszul csinálok, és megjegyeztem (legalább nyomot hagyott :D), megpróbáltam fejlődni, és legközelebb ügyesebben csinálni, nem is beszélve arról, hogy ezáltal is törekedtem a hatékonyabb kódolásra, arra, hogy lehetőleg ne használjak feleslegesen sok erőforrást, ha nem muszáj. A programozás folyamatos tanulást igényel, mindenkitől, aki űzi. Most is azt tartom jónak, ha valaki felhívja a kódbeli hibáimra a figyelmet, mivel mindig bőven van mit tanulni, az ember mindig tud bénázni.

Tényleg az lenne a követendő példa ezen a fórumon, hogy ha valaki megoldásnak minősíti az akár hibákkal telerakott kódját, akkor azt hagyjuk békén, és felejtsük is el a dolgot, ne kössünk bele a kódjába, mert akkor még a végén rosszul esik neki, hogy felhívtuk a figyelmét a hibájára? Vagy csak az a másik véglet létezik, hogy akkor már komplett kóddal kellene előállnunk, és megoldanunk az illető helyett a feladatát? (Hozzáteszem, itt a fórumon előálltam már jópár ilyennel is, ha már konstruktív segítségek megkérdőjelezéséről van szó.)
Nem tudom, ti hogy vagytok vele, de én nem hiszem, hogy ez lenne a jó megoldás, sem az nem igazi segítség, ha nem szólunk a másiknak, hogy rosszul csinálja, sem az, ha helyette oldjuk meg a teljes feladatot (bár nyilván utóbbi a kérdező számára a lehető legkényelmesebb).
Nem is beszélve arról, hogy ebben a szálban aboros részéről már érkezett egy jó megoldási javaslat.

Én továbbra is azt tartom jónak, ha merünk szólni egymásnak, ha égbekiáltó hibákat követ el a másik.

4
-4
pp képe

Továbbra se értem, hogy miért rossz, hibás ez a megoldás szerinted?

Írd le kérlek, hogy mi a hiba?

Az, hogy a Te ízlésednek nem felel meg a kód, attól még nem hibás. Az lehet ronda, meg nem szép, meg ilyenek, de nem hibás vagy rossz.

Legyél szíves belenézni egy alap hetes Drupalban a következő fájlokba:

includes/iso.inc
includes/unicode.entities.inc
includes/file.mimetypes.inc

Ha a logikádat követem, akkor ezek a kódok is hibásak, gányok, tákolmányok, mivel a PHP-ban tárolják az "adatbázist" és nem az adatbázisban.

Az pedig, hogy milyen változó neveket használ nagyon erősen ízlésbeli kérdés.

Szóval miért is hibás a kód? Mert az általad felsorolt ízlésbeli problémák nem hibák.

pp

5
-1
Sk8erPeter képe

Igazából meglep, hogy még egyszer el kell magyaráznom, mi is a probléma Szilárd kódjával, hiszen ezzel kezdtem. :) Azért az meglep, hogy ilyen kiakasztó volt, hogy kritikával illettem másnak a kódját. Tényleg csakis kérdezz-felelek legyen ez a fórum, nem alakulhat ki szakmai vita? :) Azt értem, hogy fel akartad hívni a figyelmemet, hogy a kritika túl erős volt, a stílus esetleg lehetett volna moderáltabb, de az azért furcsa, hogy még az érvelésemet is hibásnak állítod be, a srác kódját pedig lényegében hibátlannak találod. :)

De akkor legyen, megpróbálom még egyszer elmagyarázni, másképpen.
A túlzott erőforrás-használat szerintem HIBA. Nem ízlésbeli véleménykülönbség, hanem hiba. Remélem, ezzel a gondolatmenettel eddig nem vagyok egyedül. Ha megoldhatnám a feladatot kevés memória felhasználásával is, de ehelyett rengeteg memóriát használok fel, sokkal inkább bekorlátozva ezzel a további rendelkezésre álló memóriát (elvéve ezzel az erőforrást fontos(abb) feladatok elől), akkor a kód rossz.
Hogy ne csak a levegőbe beszéljek, ajánlom letöltésre ezt:
http://www.posta.hu/static/internet/download/Iranyitoszam_Internet.XLS
Ha CSAK a korlátozottabb "Települések" fület megnézed a 2000-es irányítószámtól kezdve a 9985-ösig, akkor kapásból 3362 bejegyzést láthatsz - ebben nincs benne Budapest, vagyis 1011–1239. Na most gondolj bele, a srác ezt minden egyes validálás alkalmával benyomja a memóriába, egy óriási tömbbe (Alternative PHP Cache (APC) vagy memcache, meg egyebek használatakor nyilván másképp van, egész pontosan ezt nem tudom, hogy működne, de most mindegy is). Felmerül a kérdés: minek? De ha megnézed a kódját, még azonbelül is a bonyolultabb utat választja:

  1. /* itt jön egy nagy tömb, ami az irányítószámokat megyékhez rendeli */
  2. $megyeirsz=array('Budapest' => array(1011, 1012, ....),
  3. 'Bács-Kiskun' => array(6034, 6035, 6042, ....),
  4. 'Borsod-Abaúj-Zemplén' => array(......),
  5. .....
  6. );
  7. $got_megye='';
  8. foreach($megyeirsz as $mkey =>$mvalue) if(in_array($current_irsz,$mvalue)) $got_megye=$mkey;
  9.  
  10. if($got_megye!='') { // ha van találat...
  11.  
  12. $field['#parents'] = array('field_mh_posta_megye', 'und', 0, 'value');
  13. form_set_value($field, $got_megye, $form_state);
  14. }

Mennyivel egyszerűbb lenne - ha már mindenképp ragaszkodik az összes irányítószám kódba való bepasszírozásához -, ha fordítva csinálná, és irányítószám => település (esetleg utóbbi helyett településkód, amit külön tömbben tart nyilván, bár akkor már megint adatbázis :D) formában tárolná (legyen a változó neve $irsz_megye, hogy alkalmazkodjak), és egy nagyon egyszerű egysorossal elintézné az egészet foreach() és in_array() helyett:
if(isset($irsz_megye[$current_irsz])) $got_megye = $irsz_megye[$current_irsz];
Ennyi lenne az egész.
Még szerencse, hogy nem az az általános jelenség, hogy országok komplett irányítószám-listáját PHP-kódokban láthatjuk viszont. Lehet, hogy okkal :P
Ja, és az általad említett D7-fájlok (file.mimetypes.inc, iso.inc, unicode.entities.inc) érdemes megnézni, hány bejegyzést is tartalmaznak, és összevetni a több, mint 4000 bejegyzéssel - van némi különbség. :) Jelen példával összevetve ez egyébként sem tudom, mit bizonyít.

Szóval fenntartom, hogy ezerszer egyszerűbb és szebb lenne mindezt adatbázisban tárolni, és onnan lekérni az adatokat (egyszerű létezésvizsgálat, maximum pár milliszekundum alatt lefut...) - főleg, hogy aboros már belinkelte az addressfield_hu modult, amit pedig szantog nyilván nem véletlenül készített és publikált, hanem hogy másnak is spóroljon némi időt... :) Egyszer már bele lett ölve az energia, csak használni kellene a megoldást, a - helyesen - adatbázisba (nem kódba) feltöltött tartalmat.

A változónevekkel kapcsolatos vélemény egy tanács volt, ha elolvasod még egyszer az utolsó bekezdésemet, eleve így kezdődik:

Ezenkívül ha adhatok további tanácsot a kóddal kapcsolatban: döntsd el, hogy magyarul kódolsz, vagy angolul. Inkább utóbbit válaszd

Írtam, hogy a hibrid megoldások bénácskák, de azt nem írtam sehol, hogy ez hiba lenne magában az implementációban.
Ez ízlésbeli dolog, ebben teljesen igazad van. De még egyszer: ez tényleg csak egy tanács volt, mert szerintem minden fejlesztőtől elvárható a kódjával szembeni önkritika is, ami jobb esetben igényességre törekvést jelent. Ebbe pedig beletartozik az, hogy a kódja hogy néz ki. De ez mindenki egyéni döntése, joga van a javaslatokat elfogadni vagy elutasítani. :)

Én azért nagyon reménykedem benne, hogy nem az lesz az általánosan elterjedt gyakorlat, hogy nem szólhatunk egymásnak, ha javítanivalót látunk egymás kódjában, mert esetleg ízlésbeli kérdésről van szó. Én annak örülök a legjobban, ha valaki még időben rámszól, hogy hülyeséget csinálok/lehetne szebben is, mint ha nekem kell később magamtól rájönni, hogy valahol ronda megoldást alkalmaztam.

0
-1
pp képe

"A túlzott erőforrás-használat szerintem HIBA."

Az van, hogy a Te általad javasolt megoldás nem a memóriát, hanem sok minden más erőforrást használ túlzottan, hisz nem kéne azokat használni, ha a memóriában lenne minden adat. Használja a merevlemezt, plusz processzor erőforrást, és még talán hálózati kapcsolatot is.

Szóval a Te általad javasolt megoldásra is elmondhatjuk, hogy:
"A túlzott erőforrás-használat szerintem HIBA."

Szóval ezzel a megállapításoddal egyetértek, de azzal nem, hogy mindig a memória lenne az a szűk erőforrás amire optimalizálni kéne, vagy, hogy létezne olyan, hogy úgy általánosan ez kimondható lenne.

"Alternative PHP Cache (APC) vagy memcachel, meg egyebek használatakor nyilván másképp van, egész pontosan ezt nem tudom, hogy működne, de most mindegy is"

Pont nem mindegy, hisz az, hogy melyik megoldás lesz a jó nagyban függ a környezettől(meg, hogy mire optimalizálunk ugye). Pl. APC-nél egyszer felparzolja, majd - ha olyan gyakran használják - bent is tartja a memóriába, ha ügyes vagy, akkor több száz szájtnál is csak egy példányban. Az általad javasolt adatbázisos rendszer nem hinném, hogy felveszi a versenyt sebességben és (össz)erőforrás használatban ezzel a megoldással.

"Ja, és az általad említett D7-fájlok (file.mimetypes.inc, iso.inc, unicode.entities.inc) érdemes megnézni, hány bejegyzést is tartalmaznak, és összevetni a több, mint 4000 bejegyzéssel - van némi különbség. :) Jelen példával összevetve ez egyébként sem tudom, mit bizonyít."

Azt bizonyítja, hogy hibás a logikád, mert akkor ez a kód is rossz lenne, vagy itt miért nem hibás a nem db-ben tárolás?
Hol van a határ?
Van határ?
Mitől függ a határ?
Mikor mi a határ?
Lehet egyáltalán általános határt mondani?
Ha nem lehet, akkor miért nem lehet?

pp

0
0
Sk8erPeter képe

Tényleg most is úgy érezted, hogy "Ezért kár volt koptatni a billentyűzetet" (downvote)? Hmm, pedig a kérdéseidre válaszoltam, hogy legalább megpróbáljam alátámasztani azt, amit írtam. Bár lehet, hogy a -1 nálad azt jelenti, hogy csak nem értesz egyet. :) Egyébként azt állítani, hogy "levegőben lóg" az érvelésem, picit most a Te részedről hangzik sértőn, miután konkrétumokat mondtam, hogy megpróbáljam alátámasztani azt, amit korábban állítottam, nem csak elfutottam a vita elől. Az már másik kérdés, hogy más állásponton vagyunk. (Ami nem is baj.)
No mindegy, térjünk a lényegre.

általad javasolt megoldás nem a memóriát, sok minden más erőforrást használ túlzottan, hisz nem kéne azokat használni, ha a memóriában lenne minden adat. Használja a merevlemezt, plusz processzor erőforrást, és még talán hálózati kapcsolatot is.

Túlzottan használja az erőforrásokat egy adatbázishoz kapcsolódás+query esetén? Komolyan ezt boncolgatjuk, amikor Drupalról beszélünk? Rég probléma, ha szűk keresztmetszetet jelent az adatbázis használata. Én is feltennék egy fontos költői kérdést: honnan tudjuk, mennyi memória áll rendelkezésére a felhasználónak (PHP memory_limit)?
Értem, most itt, ennél az egyetlen feladatnál spóroljuk le az adatbázis-szerverhez nyúlás idejét, annak erőforrás-használatát, azt a pár milliszekundum alatt lefutó query-t, és helyette nyugodt szívvel tömködjük a memóriát többezer adattal igazából feleslegesen, menjünk végig szépen a nagy tömbünkön, annak minden elemén egy ciklussal ahelyett, hogy egy több helyen is ÚJRAFELHASZNÁLHATÓ megoldást választanánk - pont, mint amilyet például az addressfield_hu kínál. Na de vegyük az utóbbi esetet is: adatbázisban lesznek az adataink, és többféle módon tudunk ezek között szűrni. A településlista, irányítószámlista, ehhez kapcsolódó dolgok újrafelhasználhatónak számítanak, ebben egyetértünk, ugye? (Remélem, legalább ebben.) Bár erre a fájlos megoldást támogatók részéről lehetne egy reakció élből, hogy ilyen alapon végül is be lehetne nyomni külön fájlba is ezt a többezer adatot az irányítószámokkal, településekkel, egy remek mágikus függvénybe, aztán valami rendkívül kreatív megoldással megpróbálni újrafelhasználhatóvá tenni azt.
DE még mindig nem láttam a hozzászólásaidban az igazi ellenérvet arra, amit én javasoltam alternatívaként, hogy ugyan használjuk már azt az eszközt erre, ami pontosan ilyen jellegű feladatokra való - adatok tárolására, adatok közötti, lehetőleg optimalizált szűrésre, keresésre, tárolásra. Az adatbázismotor éppen erre lett kitalálva: többezer adatban és akár egymillió adat között is lehet vele megfelelő indexelés esetén milliszekundumok alatt megszülető eredményt találni (hogy ne járna ez erőforrás-használattal?), ugyanezt nyilvánvalóan nem lehet elmondani a PHP-ról. Nem erre lett kitalálva.
A gondolatmeneted alapján - nincs ugyanis ugye elméleti határ, mint írtad: van-e értelme egyáltalán ilyenről beszélni? - akár többtízezres, többszázezres adatmennyiség is benyomható lenne beparse-olandó PHP-kódba, végül is az tök jó, hogy ott van a memóriában, ha esetleg épp kell. De nyilván Te sem így értetted (feltételezem), csak mondom, hogy a Te érvelésedből pedig ezt a téves következtetést is levonhatná akár a beszélgetésünket olvasó fórumozó. (Mitől függ a határ? Van határ?)
Akkor pedig az általad említett "túlzott", adatbázis-használatból eredő plusz erőforrás-használat is jócskán alulmarad ahhoz képest, amennyit a PHP-kód a futása során kajálni fog.
Amúgy létezik query cache is, ha már itt tartunk. :))) (Persze ez nem ment meg minket az adatbázis-szerverhez kapcsolódástól.)

Akkor beszéljünk az APC-ről. Hány osztott tárhelyes megoldásnál van szted nagy átlagban APC? A nagy átlag pedig teljesen érthető módon az osztott tárhelyes megoldást választja.
Milyen többszáz szájtról beszélünk, pontosabban miért beszélünk most többszáz szájtra alkalmazható/alkalmazandó megoldásokról, amikor itt - valószínűleg - egyetlen oldalról van csupán szó? Minél több kapacitás áll rendelkezésre, annál inkább megváltoznak az alkalmazható lehetőségek. Igen, APC-nél valószínűleg bent tartja a memóriában. Tényleg jó az, hogy ott terpeszkedik a memóriában? Attól függ! (Na, lehet, hogy ebben közös nevezőn vagyunk! :D) De továbbra is beszéljünk lehetőleg az általános esetekről, hiszen minden komolyabb környezet más és más lehetőségeket kínál. Osztott tárhely: korlátozott memória, általában a PHP-s memory_limit 128 MB vagy 256 MB körül mozog. Drupalról van szó, nem olyan sok az. Minek pazarolni? A Drupal a komplexitása miatt amúgy sem spórol szegénnyel.
Abban az egyben egészen biztos, hogy egyetértünk, hogy a megvalósítás helyessége mindig függ a környezettől és magától a feladattól. Standard megoldásokat persze épp emiatt nehéz mondani, ettől függetlenül az általános felhasználásnál nem biztos, hogy van értelme kapásból feltételezni, hogy bőven rendelkezünk szabad kapacitásokkal.
Ja, tényleg, amúgy osztott tárhelynél a MySQL-szerver általában egyébként is localhoston van. :) (Nincs távoli kapcsolódás miatti overhead.)

Konkrét elméleti határokról amúgy persze, hogy nincs értelme beszélni, de nehogy már azt tartsuk helyes megoldásnak általánosságban, hogy többezer adatot tök feleslegesen nyomjunk csak be nyugodtan a memóriába, aztán szépen egyesével lépdeljünk végig a jó nagy tömbünkön, úgyis remélhetőleg van kapacitás elég. Ha nincs, akkor meg nézhetjük át a kódot a kritikus pontok után kutatva.

Az egészbe amúgy azért ugattam bele, mert az én szememet bántotta, ez egyáltalán nem jelenti azt, hogy nálam van az erő, meg a tudás, sőt, Te nálam ezerszer tapasztaltabb vagy, de mivel ekkora adatmennyiségről van szó, semmiféle racionális érvet nem látok amellett, hogy miért is kellene ezt PHP-kódban tárolni, ha a konkrét esetet vizsgáljuk. Komolyabb kódoknál nem is láttam ilyenre precedenst, hogy komplett település- és irányítószámlistákat nyomtak volna bele nyelvfüggő (ráadásul!) implementációba.

Jaj, bocsi, még egy utolsó - talán nem levegőben lógó - érv, mielőtt elfelejtem: Szilárd az általam már idézett kódjában MINDEN esetben (!!) végigmegy az EGÉSZ tömbön, annak ÖSSZES elemén, még abban az esetben is, ha már akár a második lépésben megtalálta a kérdéses elemet. Tehát nem lép ki a ciklusból még találat esetén sem. Erőforrás-foglalás++, futási_idő++. :)))

0
0
pp képe

"DE még mindig nem láttam a hozzászólásaidban az igazi ellenérvet arra, amit én javasoltam alternatívaként"

Mert nem az alternatíváddal van bajom, mert abban egyetértünk, hogy úgy általánosságban praktikusabb ennyi adatot adatbázisban tartani.

Számomra komplex többdimenziós megoldás tér van, melyben minden megoldásnak van helye, és a hibás megoldások vannak csak ezen a téren kívül.

A fenti megoldás - annak ellenére, hogy több szempontból sem optimális - a felvetett problémára választ ad, tehát helyes megoldás, ami számomra azt jelenti, hogy benne van a térben.

Szemlátomást, számodra nem jelenti azt, hogy helyes megoldás lenne. Ok.

Mivel nem látom, hogy közelednének az álláspontok, részemről ez a szál lezárva.

pp

2
0