Jump to content
php.lv forumi

Joyride

Reģistrētie lietotāji
  • Posts

    168
  • Joined

  • Last visited

Everything posted by Joyride

  1. Vaicājums apmēram šāds: SELECT a.field1, SUM(b.field2) AS smth1, GROUP_CONCAT(c.field3 SEPARATOR ',') AS smth2 ... FROM a LEFT JOIN b ON a.b_id = b.id LEFT JOIN c ON b.c_id = c.id LEFT JOIN d ON b.d_id = d.id LEFT JOIN e ON d.e_id = e.id WHERE ... GROUP BY ... ORDER BY ... LIMIT 0, 50 Izpildes laiks ir ap 12sec. JOINotas astoņas tabulas, citas pie galvenās, citas pie jau JOINotajām. Visām tabulām ir indeksi uz ID un uz tā lauka, ar kuru tiek veikts JOINs. Vienai tabulai ierakstu skaits > 100'000, citai ~50'000, citai ~20'000, pārējās ir pavisam nelielas. Noņemot nost JOINu uz to tabulu, no kuras tiek veikts GROUP_CONCAT, atšķirība minimāla. Ja samazina atlasāmo ierakstu skaitu no 50 uz 25, atšķirība praktiski nekāda. Ko vēl varētu izdarīt, lai šo vaicājumu paātrinātu?
  2. Paldies par atbildēm, turpināšu "rakt", tomēr joprojām ceru, ka atradīsies kāds, kas padalīsies iz pieredzes :)
  3. Aleksej, paldies par saitēm, bet Sitepoint ir izskatīts krustām šķērsām un jautājumi joprojām ir palikuši neatbildēti. Protams, varēju tur uzsākt šo tēmu, taču kaut kā dzimtā valoda tuvāka :)
  4. Visi vairāk vai mazāk zin, kādi ir MVC arhitektūras slāņi (Model / View / Controller). Šobrīd prātoju par Model daļu. Agrāk tika uzskatīts, ka modelis ir objekts, kas reprezentē kaut ko (rakstu, foruma tēmu, komentāru, lietotāju, produktu, iepirkumu grozu, ...) un viņš arī satur metodes saglabāšanai, dzēšanai, datu atlasei u.c. Tagad lasu, ka pareizi ir sadalīt atbildību - modeli dalīt vairākos slāņos: Entity (vienkārša datu struktūra - tas, kas agrāk tika saprasts kā modelis, tikai bez pārējās funkcionalitātes), Service (kas veic darbības ar Entity), Gateway / Mapper (kas atlasa pēc dotajiem kritērijiem Entity/-ies). Vai kāds ar izpratni par šo visu varētu izskaidrot sīkāk? Ļoti noderētu kāds konkrēts piemērs. Man neskaidras ir vairākas lietas: * kāda tieši ir katra slāņa atbildība (kas atlasa datus, kas saglabā / dzēš, kas veic specifiskas darbības ar konkrēto Entity)? * ar ko atšķiras Gateway no Mapper? * kā notiek hierarhisku datu atlase (rakstam var būt piesaistīti komentāri)? * kāpēc datu atlasi veic Gateway / Mapper, nevis Service?
  5. 1. Īsti nesapratu, ko biji domājis, bet pozīcija nevar būt bez pasūtījuma. 2. Nepastāv iespēja pozīciju atlasīt vairākas reizes, bet pozīcijas tiek vēl sīkāk dalītas pa darba uzdevumiem un iekraušanas uzdevumiem, tātad beigās tas izskatās apmēram šādi: GROUP BY positions.id, aaa.du, bbb.load_task_id
  6. Ir tabulas PASŪTĪJUMI un POZĪCIJAS. Vienam pasūtījumam var būt apakšā viena vai vairākas pozīcijas. Dati tiek atlasīti tādā veidā, ka par pamatu tiek ņemta POZĪCIJU tabula un pie tās tiek piesaistīti pasūtījumi: SELECT ... FROM positions LEFT JOIN orders ON positions.order_id = orders.id GROUP BY positions.id, ... LIMIT ??? Un tad PHP pusē atlasītās rindas tiek sagrupētas pa pasūtījumiem. Problēma ir tāda, ka vajag kaut kādā veidā dalīt pa lapām, bet nav iespējams limitēt pēc galvenās tabulas POZĪCIJAS, jo tad ir iespēja, ka pasūtījums tiks "aprauts". Nevaru izdomāt, kā varētu to darīt pēc PASŪTĪJUMU tabulas, teiksim atlasīt pozīcijas, kuras ir pēdējos 5 pasūtījumos. Vai kāds var kaut ko ieteikt?
  7. Nesanāk... Izveicu testu uz visām utf_? kollācijām, rezultāti šādi: utf8_general_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_bin : A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, R, S, T, U, V, Z, Ā, Č, Ē, Ģ, Ī, Ķ, Ļ, Ņ, Š, Ū, Ž, utf8_unicode_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_icelandic_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_latvian_ci : Ā, A, B, C, Č, D, E, Ē, F, G, Ģ, H, Ī, I, J, K, Ķ, L, Ļ, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Z, Ž, utf8_romanian_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_slovenian_ci : Ā, A, B, C, Č, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Z, Ž, utf8_polish_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_estonian_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, Z, Ž, T, Ū, U, V, utf8_spanish_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_swedish_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_turkish_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, I, Ī, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_czech_ci : Ā, A, B, C, Č, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Z, Ž, utf8_danish_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_lithuanian_ci : Ā, A, B, C, Č, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Z, Ž, utf8_slovak_ci : Ā, A, B, C, Č, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Z, Ž, utf8_spanish2_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_roman_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, J, I, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, V, U, Ž, Z, utf8_persian_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_esperanto_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, utf8_hungarian_ci : Ā, A, B, Č, C, D, E, Ē, F, Ģ, G, H, Ī, I, J, Ķ, K, Ļ, L, M, N, Ņ, O, P, R, S, Š, T, Ū, U, V, Ž, Z, character_set_client = utf8 character_set_connection = utf8 character_set_database = utf8 character_set_filesystem = binary character_set_results = utf8 character_set_server = utf8 character_set_system = utf8 character_sets_dir = C:\HTTPServer\MySQL\share\charsets\ collation_connection = utf8_general_ci collation_database = utf8_latvian_ci collation_server = utf8_general_ci Skripts ir šeit.
  8. Aizmirsu norādīt MySQL versiju: 5.1 Grey_Wolf: paldies par saiti, bet vai tiešām nav cits veids, kā to panākt, jo uz hostētāja servera nav iespējams piekļūt MySQL konfigurācijai (charsets failiem). Notestēju visas iespējamās utf_? kollācijas, neviena pareizi nekārto (http://img268.imageshack.us/img268/1536/clipboard02jgf.jpg)
  9. Sveiki, Ir datubāze un tabulas utf8 charsetā, noklusētais collation - utf8_unicode_ci. Jautājums vienkāršs: kā panākt, lai dati latviešu valodā kārtotos pareizā secībā? Problēma slēpjas tajā, ka garumzīmes tiek liktas pirms burta bez garumzīmes: IR [Ābols, Amerika, ...], JĀBŪT [Amerika, Ābols, ...] Mēģināju paspēlēties ar dažādiem collation (unicode, genetal, latvian), bet nekā. Un kā ar citām valodām? Varbūt kāds var pastāstīt par savu pieredzi un "zemūdens akmeņiem" apstrādājot datus daudzās valodās...
  10. andrisp - Paldies! $GLOBALS['_SERVER'] nestrādāja, bet $_SERVER strādā! Unset globālajiem taisu tādēļ, lai programmētājs būtu spiests lietot Request klasi, lai piekļūtu šiem mainīgajiem, jo pirms tam vajag veikt dažādus drošības pasākumus, piem. strip_tags, vai stripslashes, atkarībā no mainīgā + vēl rewrite url funkcionalitāte (nevis $_GET['module'], bet, piem. $REQUEST->module, $REQUEST->lang, $REQUEST->param('id') utt.) un daudzas citas lietas. Vārdu sakot, vienots interfeiss. Bez tam tiks lietots custom sesiju klase, tā kā par $_SESSION arī var aizmirst. Pagaidām netiek izmantots neviens 3rdparty skripts. Ja būs vajadzība pēc kāda, tad veikšu mazas izmaiņas :)
  11. Ir TRequest klase, kura kalpo ka reģistrs visiem superglobāļiem (GET, POST, COOKIE, SERVER) class TRequest { $SERVER = array(); public function __construct() { $this->SERVER = $GLOBALS['_SERVER']; unset($GLOBALS['_SERVER']); } } Lieta tāda, ka ja PHP konfigurācijā "auto_globals_jit" ir uzstādīts uz "On", tad: Šādā gadījumā, TRequest::__construct metodē $GLOBALS['_SERVER'] ir neeksistējošs mainīgais, tā arī ir problēma, kuru gribu atrisināt. Viens variants ir kautkur ārpus visām klašu metodēm un funkcijām (piem. skripta sākumā) likt PHP izveidot šo mainīgo kaut vai šādi: $_SERVER['dummy'] = 1; ... un tad izveidot Request klasi. Vai ir vēl kāds veids to panākt, nepiesārņojot kodu ar šādu paņēmienu?
  12. ini_set('display_errors', 'On'); ini_set('display_startup_errors', 'On'); error_reporting(E_ALL | E_STRICT); un paskaties PHP konfigurācijā, vai pie "disabled_functions" nav "ini_set". EDIT: Kas tas ir par erroru? Ja tas ir parse error, fatal error utml, ko nevar noķert ar PHP error handleri un ja PHP konfigurācijā kļūdu paziņojumi netiek rādīti, tad nekas nesanāks...
  13. v3rb0, paldies, strādā, bet vai varētu paskaidrot, kas tajā rindā notiek vai uzrakstīt kaut kā izvērstāk, savādāk es īsti nesaprotu... function(me) { return function() { me.checkTimeout(); } }(this) // wtf?
  14. Ir pašrakstīta XHR wrappera klase (izņēmu ārā visu lieko kodu, lai nejauktu galvu): function Ajax() { var _this = this; // Šeit klasei varam piekļūt ar "this" function checkTimeout() { // ... } this.execute = function() { // Šeit klasei varam piekļūt ar "_this" interval_id = setInterval("???.checkTimeout();", 1000); // Problēma !!! } } Kā lai šeit norāda, kas ir owneris f-jai checkTimeout? "this" tiek uztverts kā parent f-ja "execute", "_this" ir "undefined"...
  15. Turpinot Alekseja domu - nesauc mainīgos tādos vārdos, kādi Tev ir izmantoti id vērtībām: var items=1; un <div id="items">
  16. Ja tev to DLL neatrada, tatad PHP tu laid ka Apache moduli... Ieteikums - ieliec ieks %Apache%/bin/ mape to DLL failu, lai nepiek@k@tu sistemas mapi.
  17. Paskaties dependencies ieks %PHPDIR%/snapshot.txt. php_mcrypt.dll ir vajadzigs libmcrypt.dll.
  18. Es daru tā, ka man ir pamata konfigurācijas masīvs $CFG, kurā glabājas DB uzstādījumi utml. Tajā pašā masīvā izveidojam jaunu elementu: $CFG['maintenance'] = false; un kodā attiecīgi: if($CFG['maintenance']) { die('Tiek veiktas izmaiņas, pienāciet vēlāk!'); } // ... šeit iet tālāk tavs kods ...
  19. Precīzāk, nokešo PHP baitkodu, tātad netiek katru reizi no jauna pārsēti skripti, tikai izpildīts jau nokešotais baitkods.
  20. Vajadzētu jūsu palīdzību XHTML pārsēšanā. Domāju izmantot php expat XML parseri. Šāds ir pirmais mēginājums, bet ir problēma: doctype netiek atlasīts. PHP manuālī rakstīts, ka jālieto arī xml_set_default_handler(): ...bet arī nekā (handleris ne reizi netiek izsaukts). Vai kāds nevarētu palīdzēt atrast piemēru, kā pilnībā varētu XHTML kodu pārvērst tree-like veidā, lai pēc tam ērti var piekļūt tagiem un to parametriem?
  21. Nelogiski kaut ka, si f-ja ir tikai jadefine, jaizsauc nebus...
  22. Vēršos pie tiem, kuri izmanto __autoload() funkciju. Kur jūs viņu definējat? Nevaru loģiski izdomāt, kur viņai būtu vieta. Failos, kur glabājas t.s. core funkcijas...?
  23. Ar javascript (jquery + thickbox).
×
×
  • Create New...