Jump to content
php.lv forumi

Roze

Administratori
  • Posts

    1,561
  • Joined

  • Last visited

Everything posted by Roze

  1. Nu tapēc ka resursi nobloķēs :)
  2. Teorētiski ir atsauce uz avotu ir . Idejiski piemēram TVnet noteikumos: TVNET.lv lapas lietotājs drīkst izmantot informāciju, bez redakcijas atļaujas, nekomerciāliem nolūkiem, saskaņā ar LR likumu par autortiesībām, norādot atsauces un ievietojot TVNET logo. .. līdz ar to nava tikai logo :) No otras puses nedomāju ka projekts ir ilglaicīgs, jo kurš gan atteiksies no reklāmas biznesa (šeit domāju resursus no kuriem tiek vāktas ziņas)..
  3. Nepareiza pieeja.. jādara būtu apmēram šādi: $result = mysql_query("... ''); while($row = mysql_fetch_assoc($result)) { $total[params1][params2] += $row[value]; $total[params1] += $row[value]; $total += $row[value]; } Kur tu idejiski iegusti vairākdimensionālu masīvu (protams var dalīt atsevišķos varibļos), kurā var sagāzt katras kategorijas countus nu vai kaut kā tā.. Šādi tev nav nepieciešams ģenerēt gatavus masīvus un cikloties tiem cauri bet gan tu pa taisno no SQL resulseta jau vāc sev nepieciešamos skaitļus. Protams var uzrakstīt arī COUNT() kverijus SQL db serverim. Šķiet ka līdz kādai 5.1 versijai windows buildi ir bez eneiblota memory limita..
  4. 1) Kamdēl tas nepieciešams? 2) To tak var izdarīt ar php.. Salīdzini ar iepriekš izvadīto vērtību ja sakrīt tad neizvadi ja nesakrīt tad izvadi un atceries. 3) Šādus subresultus ar var skaitīt ar php, viens interger mainīgais aizņems pāris baitus :)
  5. Šito visu palasot jānonāk pie secinājuma ka jātaisa koderu arodbiedrība :)
  6. To nedara apache bet gan php ar memory_limit settingu.. Vēl piemetot 5cas kapeikas pie tā visa ja ir zināšanas un vēlme var taisīt operacijas ar shared memory, proti datus nedublēt (piemēram kā to dara tas pats foreach) bet visi procesi strādā ar vienu apjomu..
  7. Btw tas tiek darīts no PHP un caur kādu clientu? FreeTDS? Vai konkrētais kverijs analogi izpildās arī piemēram no MS Enterprise sql managera? Var paprovēt iekš freetds.conf pie konkrēta servera pielikt: client charset = UTF-8 Nejauc MS SQL ar MySQL :)
  8. Šai problēmai ir šāds cēlonis - php ir nokompilēts lai meklētu MySQL socket failu zem /tmp bet MySQL ir izveidojis to kaut kur citur (parasti zem /var/lib/mysql/ ... ) Ir divi risinājumi: 1. Atrast kur MySQL patiesi ir izveitojis to savu mysql.sock failu un pamainīt to: a) to var darīt MySQL galā my.cnf norādot [mysqld] socket=/tmp/mysql.sock b) php.ini / vai ini_set nomainīt uz pašreizējo: mysql.default_socket 2. Vienkāršāks variants ir: $dbhost = "localhost"; nomaini par reālo IP (ārējo) jo tad php vairs nemēģinās konektēties caur socketu bet pa taisno (TCP).
  9. Nekā.. mysql_close() never ciet persistantas konekcijas Note: mysql_close() will not close persistent links created by mysql_pconnect(). mysql_close() reāli jēga ir izmantot ja tiek lietoti pagari / ilglaicīgi skripti (teiksim kādi shell procesi) kur konekcija uz MySQLu nepieciešama tikai kādā brīdī bet pēcāk vairs nē.. Attiecībā uz pconnectu šķiet ka konekcijas tiek handlētas tikai no paša MySQL gala (ar wait_timeout direktīvu) vai arī kādu citu konekciju "pūleri" aka SQLRelay piemēram.. Pie kam standarta variantā (php+apache (prefork)) persistantajām konekcijas šķiet vispār nav iespējams jēdzīgi izmantot ..
  10. Problēma ir ka šis nav atomic / thread safe (kas tika jau iztirzāts sākuma postos :) ).. Proti starp punktu 1. un punktu 2. var izpildīties N citi MIN(id) pieprasījumi, kas nozīmē ka 2. punktu izpildot MIN(id) nebūs vairs nekāds unikālais bet aizņemts jau N reizes.. Un nav svarīgi vai tas ir vienas vai divi tabulu ietvaros .. Protams var taisīt ciklu kas mēģina šādas darbības izpildīti kamēr tiešām 2. punktā ieliktais MIN(ID) tiešām ir unikāls, bet tas ir pārlieku liels overheads.. Bet tika atrisināts savādāk lai MySQL pats handlē šādu situāciju neizmantojot lockus.
  11. <a href="http://manalapa.kkas.lv/galerija.php?Skatit=bildes">Skatit bildes</a> ?
  12. Risinājums ir pareizi SQL kverijus rakstīt.. bet tā kā domāju ka neviens no foruma useriem nav apvelīti ar telepātiskām spējam lai uzzinātu tava MS SQL servera datubāzu struktūru / laukus tad kā tu stādies priekšā lai tev kāds kaut ko uzraksta priekšā? Ja tu piešķir remote pieeju cita lieta :) Un starp citu kļūdu paziņojumos viss ir skaidri pateikts ..
  13. Ja vispār nav aizmirsuši kā zīmuli turēt rokā ;)
  14. Nē normāls paziņojums: Invalid object name 'TableName' Tev tādā TableName tabula eksistē?
  15. Neticu nevienam tam 1000Mb/s (ja nu vienīgi IPasaules) .. Ok varjaubūt ir gigabita tīklene bet switch un pārējie pļurzuļi ta ir 100nieki un ar to viss beidzas :) Divi no tiem sterveriem stāv DEACā divi Eunetā.. šaubos šaubos pa taisno gigabitu tur uz LIXu..
  16. Jā ir.. Ja protams taču caveats ir tas SELECT min(ID) .. Ne obligāti tur ;) Vienkārši ir diezgan daudz analogu pakalpojumu / risinājumu.. Mīnus ir gan ka papildus jātaisa kaut kāds history logs jo lietotājs vairs neoperē ar objekta īstajiem identifikatoriem bet gan temporāri piešķirtiem..
  17. šoreiz ID nav jāsaprot obligāti kā tabulas relācijas lauks bet gan vienkārši unikāls keywords ar ko operē lietotājs. Nu minēšu piemēru - apmaksa ar SMS .. tev patīk rakstīt sms ar 8 ciparu skaitļiem un nedod dies nenokļudīties? Patestēsim.. bet ienāca šāda doma prāta. Ir gan zināms overheads bet varētu atrisināt konkurences un lockošanas problēmas, proti daram šādi. 1. Iegūstam lielais_id = mysql_insert_id(); 2. UPDATE small_table SET bigid = 'lielais_id', free = 0 WHERE free = 1 LIMIT 1 (Sheit LIMIT 1 garantee ka tiks updeitots tikai viens ieraksts.. ) 3. Un tad SELECT id FROM small_table WHERE bigid = 'lielais_id' Otrajā punktā var vēl checkot ja affected rows ir 0 tad var taisīt INSERT (nu teiksim small_table ir izbeigušies visi mazie ID cipari).
  18. Nja FOR UPDATE locko tikai uz update/delete ne SELECT (read). Delfins tavā variantā ir problēma: $sql = "select min(id) AS id from small_table where free = 1"; Kas notiek ja ienāk divas konekcijas reizē? Abas izpilda konkrēto selectu .. dabū vienādu 'id' un sākas šaize, jo $sql = "update small_table SET free=0 where id = {$row->id}"; izpildās vēlāk.. Proti starp pirmo selectu un updeito pa starpu (kas nomaina small_table konkrētā ID statusu) var notikt jau N identiski selecti kuriem tiks atgriezts identisks "mazais" id .. Vienkāršāk sakot ir problēma jo nav (vai es kaut kā nevaru atrast) row-level READ locks (es gan pieņemu varētu būt baigais overheds no servera puses ko tādu implementēt). Ideāli būtu: Konekcija1: SELECT min(id) From table lock read; id | 1 | Konekcija2: SELECT min(id) From table lock read; id | 2 | ...
  19. Tas ir mobils pakalpojums līdz ar to switchoties no cipariem uz burtiem ir ķeska :) Es te skatos kaut ko par SELECT * ... FOR UPDATE; Ja tas nolockos MIN(id) ierakstu un citai konekcijai atgriezīs nākošo min(id) būs ideāli..
  20. bubu neerti ir rakstīt N-ciparu skaitli.. v3rbo aha mēģinājām ar base32 īsāk sanāk bet ir burtni atkal ķeska ;)
  21. Sveiki, varbūt kāds ir saskāries (ganjau ir) un ir kāds know-how par sekojošu lietu: Ir DB (MySQL) tabula ar IDentifikatoru (piem primary key autoinc) - kā jēdzīgāk būtu panākt pēc iespējas mazāku ID lietojumu? Proti lietotājam jāoperē ar ieraksta ID taču ja ierakstu daudz tad standarta autoincrement vērtībā paliek par sešciparu-septiņciparu skaitli un ir neerti. Teiksim ir ieraksti 1 | Babah 2 | Zazah ... 10000 | Tadah Viena doma bija ka tajā brīdi kad lietotājs beidz darbības piemēram ar '2' objektu id tiek pacelts par kaut kādu lielu skaitli teiksim 2 + 10000000, taču tas neko būtisku nedod jo MySQLs pats neprot rejuzot pa vidu esošās tukšās vērtības bet gan tikai no beigām (MAX(id)+1).. Bija doma izmantot papildus tabulu kurā būtu čupa ar mazajiem ID (teiksim 1 - 10000) kuriem temporāri tiek piesaistīti lielās tabulas identifikatori - tas ir no mazās tabulas tiek atselectēts MIN(id) WHERE lielais_id = '', tad iesetojam konkrētjam ID saikni ar lielo id un līdz ko lietotājs darbības beidz atbrīvojam.. Taču rodas problēma ar konkurenci proti līdzko uz mazo tabulu tiek pieprasīta čupa ar MIN(id) loģiski ka sanāk ka daļai no lielās tabulas ID tiek piesaistīts viens mazās tabulas ID, kas nav pareizi. Lockojot tabulas pie SELECTa sanāk ziepes ar parāk daudz pieprasījumiem rindā.. So varbūt ir kāds hints?
  22. Nafig tādas izvīrtības, ja to var panākt divos parastos kverijos (attiecīgi mainot secību kā mums vajag). 1. UPDATE table SET value = 'x' WHERE lauks > 80 2. SELECT id FROM table WHERE lauks <= 80 .. Un tā mēs būsim panākuši to pašu - updeitojuši ierakstus kur lauks ir > 80 un izvadījuši tos kur ir mazāks vai viendāds.
  23. Roze

    win32api no php

    Ūja noliki 2vus core PHP developerus :) Bet nu patiesībā kaut kā izskatās ka tu čerez žē gribi kaut ko panākt.. Proti kapēc tai vietā lai webaplikāciju valodai/videi piemuhļīt windozes supportu vienkāršāk nav (ja tik ļoti gribās php) iebāzt PHP supportu kādā valodā/vidē kuram ir native win-api atbalsts? Delphi/MS-Net kaut kā tā? http://www.php-compiler.net/ http://members.chello.be/ws36637/php4delphi.html utt..
  24. Jezus jezus šitie trakie manuāļi un install guides un wampi.. un visur ar php.exe un ScriptAlias. Laikam būs jāsaņemas un jauzraksta normāla instalācijas instrukcija..
×
×
  • Create New...