Keresés

Részletes keresés

Laja73 Creative Commons License 2016.04.18 0 0 10043

Sziasztok

 

Ezt a hibaüzenetet kapom:

 

akarmi.huis currently unable to handle this request. 500

 

Akkor jön elő, amikor létre akarok hozni egy osztályt:

 

    class CONNi {}

 

Mé?

szjozsi79 Creative Commons License 2016.04.13 0 0 10042

Nem is a kódrészlet az érdekes, mert az csak egy függvényhívás. Az egésznek annyi a lényege, hogy időnként a szerver nem válaszol időben. És addig nem tudok új adatot kérni. Nyilván ilyenkor maga a program is áll, tehát valami "oldalszál" kéne, ami csupán ezt az egy függvényhívást jelentené és csak annyi ideig létezne, amíg a válasz meg nem jön. A másik gondom az, hogy van egy globális változóm, aminek viszont folyamatosan léteznie kéne, ezért a "főprogramot" nem szakíthatom meg.

Úgy érted, hogy a curlopt_timeout megszakítja a kérés-függvényt, ha nem érkezik válasz meghatározott időn belül?

 

Előzmény: _szergej_ (10041)
_szergej_ Creative Commons License 2016.04.11 0 0 10041

Nagyon szép kódrészlet, csak semmi nem derül ki belőle. Ha curl-lel kéred le az adatokat, annak megadható timeout.

szjozsi79 Creative Commons License 2016.04.10 0 0 10040

Üdvözletem Mindenkinek!

 

Aszinkron api-lekérést kéne php-ban megoldani.

Adott egy szolgáltató, akinek van egy api felülete, azon keresztül lehet tőlük adatokat kapni.

Korábban böngésző-js-php útvonalon kértem. A js oldotta meg az időzítést, a php meg a kapcsolatot a szolgáltatóval.

Ha az adat nem jött meg, a js időzítése akkor is utasította a php-t az új adat lekérésére.

Most én a böngészőt és a js-t kiiktattam, praktikus okokból és nem is szándékozok használni, hanem cli-t használok, de a következő problémám akadt. Eddig minden jól ment úgy, hogy php-lekérés, válasz jött, feldolgoz, megjelenít, új kérés.

Igenám, de a szolgáltató úgy döntött, hogy időnként késlelteti a választ, ami az én céljaimnak nem felel meg. Ilyenkor a programom újraindításával oldottam meg, de nem tudok mindig a gépnél lenni, az adatok meg kellenek.

Úgy néz ki a kódrészlet, hogy

$response = apiRequest();

És itt véletlenszerűen megáll határozatlan időre a program futása, esetenként megkapta a választ 5-10 másodperc múlva, akkor tovább fut, de nekem az már késő. Azt kéne megoldani, hogy ha nem jön 2 másodpercen belül válasz, akkor kérjen újat, az előző lekérést pedig felejtse el. Megoldható ez vajon úgy hogy a php program futását nem szakítjuk meg?

 

 

 

hellsing Creative Commons License 2016.03.07 0 0 10039

Köszönöm, ez OK. A dátum timestamp és a rendszer olyan, hogy nem fordulhat elő 1mp-en belül két verzió.

Előzmény: halaloszto (10038)
halaloszto Creative Commons License 2016.03.07 0 0 10038

de ez bebukik ha pl két azonos dátumú van. 

az lenne a minimum hogy legyen egy igazi kulcs oszlop a táblában, vagy még inkább egy verziószám a dátumon kívül.

Előzmény: halaloszto (10037)
halaloszto Creative Commons License 2016.03.07 0 0 10037

select *

from documents

where (id, lastchangedate) in (select id, max(lastchangedate) from documents group by id)

 

 

Előzmény: hellsing (10036)
hellsing Creative Commons License 2016.03.07 0 0 10036

A docs a FROM-ban lévő SELECT aliasa.

 

Az ötleted sajnos nem jó. Lehet, hogy én nem voltam egyértelmű, de megpróbálom másként: van egy webshop, aminek van kb. hatféle kötelezően megjelenítendő dokumentuma, pl. hivatalos adatok, szállítási költségek, copyright infó, stb. Ezeknek a doksiknak van n+1 verziójuk, és ezek mind egy (documents) táblában vannak.

 

A formulád sajnos csak a legutoljára mentett dokumentumot adja ki, bármelyik is legyen az. Nekem mindegyikből az utolsó verzió kellene, egyszerre. Ezt hozza is a képletem, csak bíztam benne, hogy ismertek egy egyszerűbb módot, mint a FROM ( SELECT ... ). Úgy tűnik, hogy azért kell a FROM ( SELECT ... ), mert ha mindent a documents táblából kérek le, akkor a SELECT DISTINCT (próbálok jól fogalmazni) az egyes sorok összes lekért mezőjének összegéből válogatja az egymástól különböző értékeket, azaz hiába írom, hogy ... DISTINCT ( docTitle ), docRecDate, mégis ugyanannak a dokumentumnak minden verzióját megkapom, vhogy így:

 

about_us 2012-12-24 18:00:00

about_us 2013-01-31 23:59:59

t_and_c 2012-10-31 12:34:56

t_and_c ...

 

Ha viszont a documents táblából doc alias alatt másolatot készítek és arra hivatkozok, akkor jó eredményt kapok. Csak nem voltam biztos abban, hogy ez az optimális eljárás.

Előzmény: Laja73 (10034)
halaloszto Creative Commons License 2016.03.06 0 0 10035

ezen kell kicsit reszelni, de igen, ez az egyik megoldás. 

a másik amit ismerek az a rank vagy row_number analitikus fuggvennyel megy. 

 

mysqlt nem ismerem

 

Vajk

Előzmény: Laja73 (10034)
Laja73 Creative Commons License 2016.03.06 0 0 10034

Lehet, hogy félreértem vagy leegyszerűsítem a problémát (hirtelen nem vágom hogy docs vagy documents, esetleg ez két tábla?), de nekem egy

 

SELECT (...) WHERE docRecDate IN (SELECT max(docRecDate) FROM documents)

elegendőnek tűnik. 

Előzmény: hellsing (10033)
hellsing Creative Commons License 2016.03.06 0 0 10033

'reggelt!

 

Van egy MySQL tábla, amiben többféle doksi van eltárolva, mindegyik annyiszor, ahányszor módosult (a leghosszabb is csak 4000 karakter körül van). A docTitle az azonos témájú dokumentumoknál megegyezik, a különbséget az egyes verziók dátuma adja:

 

    docTitle, docBody, docRecDate

 

Ki kéne nyerni minden doksiból a legújabb verziót. Több zsákutca után erre jutottam:

 

    SELECT DISTINCT
        documents.docTitle
,
        docs.docID
,
        docs.docBody
,
        docs.docRecDate
   
FROM
        documents
,
       
( SELECT * FROM documents ORDER BY docRecDate DESC ) AS docs
   
WHERE
        documents.docTitle
= docs.docTitle
   
GROUP BY
        documents.docTitle
;


Ez működik, de van erre szebb-jobb módszer? A sebességével nincs gond, lefut 0.0036s alatt.

NevemTeve Creative Commons License 2016.03.06 0 0 10032

Nem volna rossz, ha ténylegesen elkezdenél debuggolni. Értem, hogy nehéz, meg hexakódokat táblázatokból kikeresgélni unalmas, de gondolj arra, milyen jó lesz, ha már készen leszel.

Előzmény: harrier tom (10031)
harrier tom Creative Commons License 2016.03.06 0 0 10031
Sziasztok!
Nem voltam gépnél a napokban...
Pontosan mire gondolsz? Az adatbázishoz nem tudok hozzányúlni, az ékezetes oszlopnevek maradnak sajnos...
Valahogy nem lehet konvertálni a conn stringet utf-16-ra, mert alapból arra panaszkodik, php scriptet meg hagynám ansii-ban iis-7 alapból kéri, aztán talán
mikor vissza kapom a query eredménYét, akkor ismét convertálnék utf-8 vag 16- ba...
Tanácstalan vagyok...
halaloszto Creative Commons License 2016.02.29 0 0 10030

Én mindenképp elkezdeném a migrációt. Nemtudom milyen adatbázis, csak lehet valami aliast vagy view-t csinálni, aminek már rendes neve van. Minden új kód az aliast hivatkozza, minden problémás esetet úgy oldok meg hogy az adott kódot átírom ékezetmentesre. Így persze örökre marad kód ami az ékezetest hivatkozza, de ha bármivel gond van, meg tudom oldani hamar.

 

Vajk

Előzmény: szjozsi79 (10029)
szjozsi79 Creative Commons License 2016.02.29 0 0 10029

Nem lehet a táblában az oszlop nevét megváltoztatni?

Előzmény: harrier tom (10025)
halaloszto Creative Commons License 2016.02.29 0 0 10028

perszehogy érdekel! ez az internet lényege. lesz még aki belefut ebbe, és a google meg fogja neki találni ezt a fórumot. örülni fog ha a megoldás is itt lesz, nemcsak a probléma.

 

 

Előzmény: harrier tom (10027)
harrier tom Creative Commons License 2016.02.29 0 0 10027

Köszönöm a választ!

A linket átböngészem, ha megoldottam a problémát leírom a tapasztalataimat, ha valakit érdekel.

NevemTeve Creative Commons License 2016.02.28 0 0 10026

Ilyen jelecske akkor szokott megjelenni, amikor utf8-at ígérünk, de helyette egybájtos kódot küldünk. Meg kellene nézni egy hex-viewerrel a scriptedet, hogy igazból utf8-e van benne. No meg ezt is meg kellene nézni: http://web.axelero.hu/lzsiga/ekezet.html

Előzmény: harrier tom (10023)
harrier tom Creative Commons License 2016.02.28 0 0 10025

Köszzönöm!

Sajnos ezen már nem tudok változtatni. Ezt elszúrták. Én is azt olvastam a neten, hogy ékezetes betűket ne használjak column névként, de nem én csináltam az adatbázist, és az egyik intraneten hiba nélkül működik.

Mit lenne érdemes ellenőriznem?

halaloszto Creative Commons License 2016.02.28 0 0 10024

ha neked is kockában kérdőjelet mutat a hibaüzenetben, akkor tuti arról van szó hogy van benne olyan karakter ami megfekszi a gyomrát. lehet hogy az é elmegy, de az ő vagy ű-be belehal. 

 

muszáj leszoknod az ékezetes objektumnevekről. még ha a gyártó azt is mondja hogy támogatja, nagyokat fogsz szívni vele. a profik sosem használnak ékezetes neveket, ezért rengeteg bug ami ezekkel kapcsolatos nincs felfedezve sem, vagy ha igen, senkit nem érdekel. 

 

Vajk

Előzmény: harrier tom (10023)
harrier tom Creative Commons License 2016.02.28 0 0 10023

Köszönöm!

Ez a szállodáknál, amásik jó:

 

Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102 [code] => 102 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near ''. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near ''. ) )

NevemTeve Creative Commons License 2016.02.28 0 0 10022

Ha jól értem a google-t, macskakörmöket lehetne próbálni:

$stmt= "select \"SZÁLLODA_NÉV\" from \"SZÁLLODÁK\" "

 

Mindenesetre jó lenne, ha a hibaüzenetet be is idéznéd ide, hátha nem mindenki gondolatolvasó...

Előzmény: harrier tom (10021)
harrier tom Creative Commons License 2016.02.28 0 0 10021

Köszönöm, hogy foglalkozol a problémámmal!

Ez lenne a legkézenfekvőbb megoldás, de a mezők átnevezése nélkül is működik az egyik helyen a lekérdezés. A probléma pont abból adódik, hogy három másik alkalmazás is használja ezeket az adatbázisokat, melyeket nem tudok átírni. A futtató környezet mindenhol azonos / legalábbis azt kell hinnem, mindenhol én raktam fel az iis 7.5-öt és php-t /, az adatbázisok egyformák, hiszen mindhárom helyszínen ugyanazok az alkalmazások használják ezeket.

Amikor átmásoltam a .php-ket a másik gépre, először a connection paraméterekre panaszkodott, hogy nem tudja átkódolni őket. Elmentve ezeket utf-8-as kódolással, már csak szintaktikai hibára dobott hibát, mely szerint '?' itt található a hiba. Megpróbáltam 'szállodák' ezt is, akkor vmilyen másik helyen írta ugyanazt a hibát. []-ba zárva sem enged tovább, bármit teszek.

Az alkalmazás a másik helyen , ahol működik , ott változókat is küld insert-hez, update-hoz is, és ott mégis megy.

Esetleg van még valami ötleted? Köszönöm...

NevemTeve Creative Commons License 2016.02.28 0 0 10020

Az összes ékezetes tábla és mezőnevet át kellene nevezni: SZÁLLODÁK->SZALLODAK/HOTELS; SZÁLLODA_NEVE->NEV/NAME.

 

PS: ja és a TERMEK nevű táblában egy TEREM nevű mező nem fejez ki semmit... legyen az 'ID' vagy 'SZAM' vagy 'NEV' de utaljon a mezőtartalom mibenlétére

Előzmény: harrier tom (10019)
harrier tom Creative Commons License 2016.02.27 0 0 10019

Tisztelettel üdvözlök mindenkit!

 

Segítségeteket kérném, új vagyok az oldalon, közel az ötvenhez és hobbiból készítek alkalmazásokat.

A következő a problémám:

Adott a környezet 3 gépen /win7 prof, php 5.6.18, iis with fastcgi, mssql server/, mindhárom más-más intraneten van.

Készítettem egy alkalmazást, amelyik php-n keresztül kérdezi le az mssql servert. Egyszerű select,insert,update stb. van szó, változókkal ill anélkül.

Az egyik helyen tökéletesen működnek a dolgok, a másik kettő helyen valamiért nem.

Itt a két egyszerű select script, az első működik, a második nem. Az mssql szerverek ugyan olyanok, schema és adatok is bennük ugyanaz. Win7 pro is ugyanaz mindhárom helyen, iis 7.5 ugyanaz.

Kapcsolat mindenhol létrejön, utf-8 a scriptek kódolása, mert asci-ben mentve a conn stringre panaszkodik, hogy nem tudja a karaktereket átkódolni.

Valakinek tanácsa?

Sok mindent próbáltam már, szívesen csevegnék róla...

 -------------------------------------------------------------------egyik:------------------------------------------------------------

 

<?php
$serverName = "xxSQLEXPRESS";
$connectionInfo = array( "Database"=>"xx", "UID"=>"xx", "PWD"=>"xx" );
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT TEREM FROM TERMEK order by TEREM asc";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );
}

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    echo $row['TEREM']."n";
}

sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

---------------------------------------------másik----------------------------------------------

<?php
$serverName = "xxSQLEXPRESS";
$connectionInfo = array( "Database"=>"xx", "UID"=>"xx", "PWD"=>"xx" );
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT SZÁLLODA_NEVE FROM SZÁLLODÁK order by SZÁLLODA_NEVE asc";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );
}

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    echo $row['SZÁLLODA_NEVE']."n";
}

sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

 

szjozsi79 Creative Commons License 2016.02.26 0 0 10018

A php-hoz értesz?

Csak kérdés.

Előzmény: bencevillam03 (10009)
szjozsi79 Creative Commons License 2016.02.26 0 0 10017

Én alapvetően nem vagyok oda az oktatóvideóktól.

Egy példaprogramot átalakítgatni meg bővíteni sokkal hasznosabb és érdekesebb időtöltés is.

Néha kell hozzá olvasni egy kis szintaktikát, meg azért is, hogy tisztában legyünk a lehetőségekkel, de teljesen feleslegesnek tartom 10-100 megabájton tárolni azt, amit kb. 10 perc alatt könyvből el lehet olvasni.

Nem tudom, hogy a kedves tanácstalan olvtárs hány éves, de az a gyanúm, hogy a mai fiatalok nem tudnak könyvből olvasás után megérteni semmit. Vagy egyszerűen lusták.

Előzmény: _szergej_ (10016)
_szergej_ Creative Commons License 2016.02.23 0 0 10016

Uramisten... Az 1 órát nem néztem végig, de bele-belepörgettem, majd' 50 percig telepít egy szaros WAMP-ot, mindezt kezdőknek "magyarázva", a php.ini meg apache.conf meg egyéb nyalánkságok mutogatatásával.

Így kellett volna kezdenie: töltsd le a xamppot, next-next-klikk-klikk, 2 perc és kész. Videó ide vagy oda - mert amúgy vannak hasznos videók, mindez ami ebben volt, valójában 99%-osan tömöríthető lett volna egy nagyon maximum 10 percnyi olvasást igénylő tutorialba is. De hogy ebből semmit nem tanul meg az ember, az is fix...

Előzmény: szjozsi79 (9999)
Laja73 Creative Commons License 2016.02.23 0 0 10015

Én sem nagyon értem, mivégre mqsql, ha minden egyes alkalommal lenullázod a számlálót. 

Szintaktikailag is hibás, pld

 

$win = ; 

INSERT INTO regisztracio (win) VALUES('$win',NOW())

 

 

Előzmény: bencevillam03 (10009)
NevemTeve Creative Commons License 2016.02.23 0 0 10014

(Csak arra tudok/reagálni, amit Látens olvtárs maga írt, nem állok neki találgatni, hogy ha C:/Localhost/phpmysqltest.php-t ír, akkor esetleg http://localhost/phpmysqltest.php-ra kell gondolni.)

Előzmény: szjozsi79 (10013)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!