Keresés

Részletes keresés

NevemTeve Creative Commons License 2019.11.21 0 0 10230

Mondjuk kérsz a szolgáltatótól shell-elérést, és a batch műveleteket (mint pl adatbázis-betöltés, tömeges spam-küldés) onnan csinálod.

Előzmény: RockKéró (10229)
RockKéró Creative Commons License 2019.11.21 0 0 10229

Sziasztok,

2-3000 db POST-olt változót szeretnék ciklussal lementi mysql-be és/vagy kiküldeni e-mail-ben, azonban a szerver 30 másodperc után timeout-ol (kb. 6-800 változó feldolgozása után).

A szolgáltató nem engedi ennél nagyobbra emelni max execution time-ot és a háttérben sem futtatható a skript, mert előtte kell a humán interakció (rekordok kijelölése :) ).

Mi ilyenkor a teendő?

Előre is köszi.

 

Üdv, RK.

szjozsi79 Creative Commons License 2019.10.19 0 0 10228

Ó, hogyaza ... a negyedik sor végén az aposztróf előtt otthagytam a backslasht.

Miután a 4. sor vége utáni összes sort és karaktert töröltem, még mindig hibát jelzett, csak valami nyitott bajusz-zárójelet hiányolt.

Előzmény: szjozsi79 (10227)
szjozsi79 Creative Commons License 2019.10.19 0 0 10227

Átneveztem a fájlot, új terminálablakot nyitottam, mindig ugyanez.

Lejjebb toltam, töröltem az üres sorokat, semmi eredmény. A komment-rész első sorában hiba van.

Azt mondja felesleges a 2019, helyette vessző kéne ???

Előzmény: szjozsi79 (10226)
szjozsi79 Creative Commons License 2019.10.19 0 0 10226

Ja bocs, lemaradt ...

Előzmény: szjozsi79 (10225)
szjozsi79 Creative Commons License 2019.10.19 0 0 10225

Elkezdtem egy programot írni php-ban. Ha csinálok valamit, szinte minden lépésnél megnézem az eredményt.

Eddig 4 egyszerű sornál tartok és már hiba van benne.

Csináltam egy képernyőmentést, amin jól látható a négysoros szkript, illetve a futtatás eredménye.

Akárhogy is nézem, nem látom a hibát benne.

A kurzorral végigmentem minden soron, mindegyik sor vége -ahogy az a mellékelt képen is látható- az utolsó olvasható karakterrel fejeződik be. Tehát nincs benne semmi plusz karakter elrejtve.

Meglepő módon hibás sornak érzékeli a kommentblokk első sorát. Azt vajon miért?

 

yzz Creative Commons License 2019.10.17 0 0 10224

Koszonom a segitseget!

_szergej_ Creative Commons License 2019.10.17 0 0 10223

Ha nincs szukseg cimkefelhore illetve kiirni, hogy adott cimke hany masik cikkhez tartozik, akkor nincs szukseg kulon tablara es kapcsolotablara. Eleg egy text oszlop erre, megfelelo szeparatorral, vagy ha postgreSQL is rendelkezesre all (es szimpatikusabb), akkor az alapbol tamogatja a tomb tipust. Bar bizonyos cikk/cimkemennyiseg (arany) eseten a kulon tabla hatekonyabb lehet.

Előzmény: yzz (10221)
NevemTeve Creative Commons License 2019.10.17 0 0 10222

> Szoval php mysql jo erre ?

 

Az egyik egy programnyelv, a másik egy adatbáziskezelő. Ettől függetlenül neked a kapcsolótábla nevű eszközre van szükséged.

Előzmény: yzz (10221)
yzz Creative Commons License 2019.10.16 0 0 10221

Koszonom a segitseget.

Szoval php mysql jo erre ?

 

Idokozben talaltam egy ilyen videot ahol nagyjabol pont az van ami kell nekem ha jol ertem

 

https://www.youtube.com/watch?v=TqVsVLpq3sY

PHP: Search Feature (Using Keywords)

Előzmény: NevemTeve (10220)
NevemTeve Creative Commons License 2019.10.16 0 0 10220

Azt találd ki, milyen adatbázis-táblával tudnád ezt reprezentálni. Annyit segítek, hogy n:m kapcsolatról van szó: minden cikkhez tartozhat több címke, minden címkéhez tartozhat több cikk.

Előzmény: yzz (10219)
yzz Creative Commons License 2019.10.16 0 0 10219

Sziasztok,

 

nem foglalkoztam meg PHP-vel se adatbazis keszitessel.

Most csinalok egy honlapot amihez a kovetkezot szeretnem megvalositani:

 

Minden egyes aloldalhoz rendelnek egy-egy tag-et vagy keyword-ot , hogy rakattintva vagy a keresobe beirva a hasonlo tag-gel, keyword-del ellatott aloldalak jojjenek fel.

Termeszetesen nem kerek senkit, hogy irja meg helyettem az egeszet, csak adjatok tippet , hogy milyen kulcsszavakkal induljak el a google keresobe.

Sokkal probalkoztam, de mindenhol csak "form" adatok elmentese szerepel, szoval vmi kulcsszo hianyzik.

 

Ha nem teljesen vilagos, hogy mit szerentek az alabbi link altal jobban el tudom magyarazni. Itt a cikk cime felett van 5 db tag amire rakattitva hasonlo tag-elt cikkek jonnek fel.

 

http://www.nemzetisport.hu/spanyol_labdarugas/aranycipo-messi-atvette-a-dijat-es-ismet-tortenelmet-irt-2727437

 

Elore is koszi az utbaigazitast.

szjozsi79 Creative Commons License 2019.10.14 0 0 10218

És valóban működik.

Csináltam egy objektumot, magyar ékezetes karakterekkel:

 

$obj = (object) array( "árvíztűrő" => "tükörfúrógép" );
echo json_encode( $obj ) . "rn";

 

A kimenet azonos az általad írt json1 értékével.

Előzmény: szjozsi79 (10217)
szjozsi79 Creative Commons License 2019.10.14 0 0 10217

Ez már egy fokkal jobb, bár ebben még mindig ott a sok szóköz, és újsor karakter, de attól eltekintve már json-string.

Én azonban arra jöttem rá, hogy ha a json-t dekódolom, akkor az objektum elemeire már tudok ékezetes betűkkel hivatkozni.

Tehát a json1-es példádnál maradva

 

$objektum = json_decode( $json1 );

echo $objektum->árvíztűrő;

 

a kimenet: tükörfúrógép

 

Ez volt a lényeg, hogy tudom-e használni vagy nem, illetve ehhez kell-e bármilyen konverziót, kódolást alkalmazni vagy sem.

Mivel láttam, hogy a kapott string valamilyen (u-szekvenciás) kódolású, eleve meg sem próbálkoztam az ékezetes betűk használatával, csak problémának láttam, amivel nem tudok mit kezdeni.

Előzmény: NevemTeve (10216)
NevemTeve Creative Commons License 2019.10.14 0 0 10216

Tákoltam demó-programot is:

#!/usr/local/bin/php
<?php
    $json1= "{\"\\u00e1rv\\u00edzt\\u0171r\\u0151\":\"t\\u00fck\\u00f6rf\\u00far\\u00f3g\\u00e9p\"}";

    $json2= json_encode (json_decode ($json1), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

    printf ("json1:\n%s\n\njson2:\n%s\n", $json1, $json2);
?>


Futás:

json1:
{"\u00e1rv\u00edzt\u0171r\u0151":"t\u00fck\u00f6rf\u00far\u00f3g\u00e9p"}

json2:
{
    "árvíztűrő": "tükörfúrógép"
}

Előzmény: NevemTeve (10213)
szjozsi79 Creative Commons License 2019.10.13 0 0 10215

Meglepődve tapasztaltam, hogy de igen lehet. Viszont a terminálomon (linux) nem kriksz-krakszokat kapok, hanem u-szekvenciákat. A terminálomon megjelenítek ékezetes betűket ugyanúgy, mint kínai "kriksz-krakszokat".

Tényleg nem a php hibája, ha ezeket a szekvenciákat nem találja, nem ismeri fel, hiszen akár ascii-kódú karakterek is lehetnek.

Előzmény: _szergej_ (10214)
_szergej_ Creative Commons License 2019.10.12 0 0 10214

FYI:

 

json-ban nem lehetnek ékezetes karakterek.

úgymond saját (human readable) formában fog megjeleníteni, ami viszont nem json-kompatibilis.

 

Ajanlom figyelmedbe az RFC (8259) megfelelo sorait:

...A string begins and ends with quotation marks. All Unicode characters may be placed within the quotation marks, except for the characters that MUST be escaped: quotation mark, reverse solidus, and the control characters (U+0000 through U+001F).

Any character may be escaped. ...

 

Az, hogy a terminalodon (windows cmd.exe) kriksz-krakszokat latsz, nem a php hibaja.

 

Előzmény: szjozsi79 (10212)
NevemTeve Creative Commons License 2019.10.11 0 0 10213

Szóval egy json-ból szeretnél egy másik json kapni, de úgy, hogy a \u-szekvenciák helyett ékezetes betűk legyenek.

 

$out= json_encode (json_decode ($in), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

Előzmény: szjozsi79 (10212)
szjozsi79 Creative Commons License 2019.10.11 0 0 10212

<?php
        function getVars(){
                $url = "http://aszalymonitoring.vizugy.hu/api.php";
                $curl = curl_init();
                curl_setopt( $curl , CURLOPT_URL , $url );
                curl_setopt( $curl , CURLOPT_HEADER , 0 );
                curl_setopt( $curl , CURLOPT_RETURNTRANSFER , 1 );
                curl_setopt( $curl , CURLOPT_POST , 1 );
                curl_setopt( $curl , CURLOPT_PORT , 80 );
                curl_setopt( $curl , CURLOPT_POSTFIELDS , 'view=getvariables' );
                curl_setopt( $curl , CURLOPT_TIMEOUT , 10 );
                curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , 0 );
                $ret = curl_exec( $curl );
                curl_close( $curl );
                return $ret;
        }

        $vars = getVars();

        echo $vars . "\r\n";

?>

 

A $vars egy json string, így a kimeneten (terminál) megjelenik egy jó hosszú string, ahol többek között az é betű helyett \u00e9, az ő helyett pedig \u0151, és a többi ékezetes betű helyett is hasonló kódolású karakterkód-ot látok.

Ezt a $vars stringet fájlba írom, eredmény természetesen ugyanez.

 

Ha írok egy ilyet az echo helyett:

 

var_dump( json_decode( $vars ) );

 

akkor annak a kimenete tök jó lesz ékezetek szempontjából, azonban a json_decode egy adatstruktúrát állít elő, amit a var_dump egy úgymond saját (human readable) formában fog megjeleníteni, ami viszont nem json-kompatibilis.

Amit én szeretnék, hogy az $vars stringben \u0151 helyett ő legyen, \u00e9 helyett pedig é. Nyilván tehetnék bele str_replace-t, ami kicseréli, de hagy ne kelljen már nekem ezzel foglalkoznom, ráadásul nemcsak magyar ékezetes betúk vannak, hanem pl. a fok jele (kis karika felül).

 

Előzmény: NevemTeve (10211)
NevemTeve Creative Commons License 2019.10.11 0 0 10211

Akkor csináljuk úgy, hogy te idézel be egy programot, ami bemutatja a problémádat. (Ne felejtsd el megduplázni a \ jelet.)

Előzmény: szjozsi79 (10210)
szjozsi79 Creative Commons License 2019.10.11 0 0 10210

A kimenet ugyanaz, ami a "Namost ha ugyanezt ..." kezdetű sorod fölött van, különbség a LC_CTYPE-nál van, nekem egy üres string van ott.

 

A var_dump kimenete pedig a következő:

string(69) ""\u00e1rv\u00edzt ...

string(31) "árvíztűrő tükörfúrógép"

Előzmény: NevemTeve (10205)
NevemTeve Creative Commons License 2019.10.11 0 0 10209

Kérlek mutatsd meg a 10205-ben a print_r-t, vagy az array_dump-ot, vagy a kimeneti adatstruktúrát.

Előzmény: szjozsi79 (10207)
szjozsi79 Creative Commons License 2019.10.11 0 0 10208

És egy újabb meglepetés:

 

<?php

        $adat = array( "Név" => "xyz" );
        $json = json_encode( $adat );
        echo $json . "\r\n";
        $obj = json_decode( $json );
        echo $obj->Név . "\r\n";

?>

 

kimenet:

 

{"N\u00e9v":"xyz"}

xyz

 

A php úgy látszik simán képes kezelni az ékezetes karaktereket az objektum vagy tömb indexében.

Előzmény: NevemTeve (10205)
szjozsi79 Creative Commons License 2019.10.11 0 0 10207

A print_r vagy az array_dump olvashatóvá teszi az ékezetes karaktereket, nem is azzal van a baj.

Hanem a kimenet egy adatstruktúra, ami viszont nem json-kompatibilis.

Előzmény: NevemTeve (10205)
szjozsi79 Creative Commons License 2019.10.11 0 0 10206

Sajnos erre nincs megoldás, a json-ban nem lehetnek ékezetes karakterek.

Ezért van a var_dump vagy a print_r, hogy olvashatóvá tegye, de a jelek szerint meg nem változtatja a json stringet.

Legalábbis ez a meglátásom.

Előzmény: szjozsi79 (10204)
NevemTeve Creative Commons License 2019.10.11 0 0 10205

Valamilyen programrészletet próbálj beidézni a probléma szemléltetésére, (csak persze előtte sed 's;\\;\\\\;g')
Pl:
Program:
#!/usr/local/bin/php
<?php
    $in1= "\"\\u00e1rv\\u00edzt\\u0171r\\u0151 t\\u00fck\\u00f6rf\\u00far\\u00f3g\\u00e9p\"";

    $out1= json_decode ($in1);

    printf ("LC_CTYPE=%s\nElotte: %s\nUtana: %s\n", getenv("LC_CTYPE"), $in1, $out1);
?>

Futás:
LC_CTYPE=hu_HU.UTF-8
Elotte: "\u00e1rv\u00edzt\u0171r\u0151 t\u00fck\u00f6rf\u00far\u00f3g\u00e9p"
Utana: árvíztűrő tükörfúrógép

Namost ha ugyanezt 8-bites terminálon nézed, akkor persze csúnya lesz:
LC_CTYPE=hu_HU.ISO-8859-2
Elotte: "\u00e1rv\u00edzt\u0171r\u0151 t\u00fck\u00f6rf\u00far\u00f3g\u00e9p"
Utana: årvíztŹrŠtßkÜrfúrógÊp

Előzmény: szjozsi79 (10203)
szjozsi79 Creative Commons License 2019.10.11 0 0 10204

Az a gond, hogy nem ismeri fel benne ezt a kódolást, egyszerűen ASCII-nak érzékeli, a visszaperjelet nem egy speciális karakter kezdetének gondolja, hanem visszapernek. Érdekes módon a \r\n-t ettől függetlenül új sornak veszi.

Előzmény: szjozsi79 (10203)
szjozsi79 Creative Commons License 2019.10.11 0 0 10203

Az sem működik. Próbáltam előtte a setlocale-t is semmilyen kombinációban nem  konvertálja át.

Akkor egy konkrét kérdés:

hogy lesz a következő 5 karakterből: \u00e -ből é betű?

Előzmény: NevemTeve (10201)
NevemTeve Creative Commons License 2019.10.03 0 0 10201

Talán azt próbálod kérdezni, hogy hogyan lehet utf8-ról latin2-re convertálni? Az iconv nevű eszközzel.

 

https://www.php.net/manual/en/function.iconv.php

Előzmény: szjozsi79 (10200)
szjozsi79 Creative Commons License 2019.10.03 0 0 10200

Ha ilyen egyszerű lenne, akkor nem kérdeztem volna.

Ha kiíratom a json_decode eredményét, ugyanazt kapom. Csak a var_dump jelenít meg nekem unikód nélküli objektumot.

Var_dump nélkül ugyanúgy teli van unikódokkal a stringem.

Nekem egy unikód nélküli json string kell, de azt meg nem csinál a var_dump. Mi több, a var_dump nem is hagyományos értelemben vett függvény, hanem inkább a régi (Pascal-beli) eljáráshoz hasonlatos.

Úgy látszik, hogy kénytelen vagyok str_replace-el kicserélgetni az unkódolást.

 

Előzmény: NevemTeve (10199)

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