ugrás a tartalomhoz

Command Line Scripting in PHP

Hidvégi Gábor · 2016. Már. 2. (Sze), 01.22
Használjuk ki a PHP erejét a parancssorban!
 
1

2016-ban azért bátorság kell

Práger Ádám · 2016. Már. 2. (Sze), 02.01
2016-ban azért bátorság kell ezt kitenni :D
2

Miért?

Hidvégi Gábor · 2016. Már. 2. (Sze), 11.21
A PHP előnye, hogy a standard library-je az egyik leggazdagabb funkciók tekintetében, kiegészítők letöltése nélkül lehet benne fejleszteni, jóval egyszerűbben, mint bash-ben vagy egyéb scriptnyelvekben.

Nem szabad elfelejtkezni a kezdőkről. Lehet, hogy számodra ez a blogmark nem hoz semmilyen újdonságot, de aki például most vág bele a szakmába, nem biztos, hogy neki ez annyira triviális.
3

A PHP kifejezetten webre lett

Há.Zé. · 2016. Már. 2. (Sze), 11.26
A PHP kifejezetten webre lett kitalálva. Attól, hogy van benne lehetőség parancssoros használatra... ha valamiért nagyon muszáj, akkor esetleg.
Ha parancssor kell és nem elég a bash, még mindig van csh, zsh, ha ez is kevés, akkor awk, perl, python, ruby... millió eszköz, amiből legalább egyet mindenképp meg kell ismernie egy fejlesztőnek.
4

A website-ok 80%-án php fut,

Hidvégi Gábor · 2016. Már. 2. (Sze), 11.41
A website-ok 80%-án php fut, de legalábbis egy nagyon nagy részükben, így - az előfizetéstől függően - nagy valószínűséggel van rajtuk parancssor is.

A bash-sel nekem az a bajom, hogy nem igazán intuitív (kezdőknek!), például
if [ ! -x $INITCTL ] && [ -f /usr/share/sysvinit/update-rc.d ]; then


Ránézel, és lehet találgatni, hogy mi mit jelent. Például nem egyértelmű, hogy a szögletes zárójelnek tűnő karakterek igazából (kvázi) programok, nem zárójelek, mint máshol megszokhattuk, így utánuk kell szóköz.

Ugyanez PHP segítségével:

if (!(file_exists($initctl) and is_executable($initctl)) and (file_exists($update-rc.d) and is_file($update-rc.d))) {
5

Ha ismered, nem kell

Há.Zé. · 2016. Már. 2. (Sze), 11.46
Ha ismered, nem kell találgatni.
Viszont úgy nekiesni a "programozásnak", hogy nem ismered a shellt, amin dolgozol... (cmd.exe, bash stb.) Az azért elég gáz.
Normális körülmények közt a shell az első, amit meg kell tanulni legalább alap szinten.
6

Így van

Hidvégi Gábor · 2016. Már. 2. (Sze), 12.45
Célszerű megismerni a shellt, de a másik oldalról feltehető a kérdés: miért áldozzon rá az ember az idejéből, ha ugyanazok a feladatok megoldhatóak egy olyan szépen kidolgozott nyelvben is, mint a php?
7

Ökölszabályom: ha vezérlési

Joó Ádám · 2016. Már. 2. (Sze), 14.30
Ökölszabályom: ha vezérlési szerkezet lesz benne, akkor nem írom Bash-ben.
8

Bash

janez · 2016. Már. 2. (Sze), 15.06
Én is jobban preferálom a PHP-t vagy a NodeJS-t.
Ugyanis néhány alap tool (mint amilyen a pl. sed is) nem portabilisek.
Olyan kapcsolóval is rendelkezik (-i) amit máshogyan kell paraméterezni Mac (OS X)-en mint Linuxon.
12

Pont most linkeltem én is

inf3rno · 2016. Már. 3. (Cs), 22.45
Pont most linkeltem én is ilyet nodejs-el kapcsolatban: http://weblabor.hu/blogmarkok/133443. Azért nekem más életérzésnek tűnik, mint a PHP. :D
15

Callback shell : )

Hidvégi Gábor · 2016. Már. 4. (P), 00.28
Callback shell : )
20

Az aktuális kódban yield-el

inf3rno · 2016. Már. 4. (P), 14.07
Az aktuális kódban yield-el váltották ki a callback-et, szóval nem jelentett különösebb problémát.
9

Ebben igazad van, viszont ez

Práger Ádám · 2016. Már. 2. (Sze), 16.16
Ebben igazad van, viszont ez a cikk azt fogja nekik sugallni, hogy ezt így kell csinálni. Ma ez már nem igaz. Ez ma már csak egy sidenote szabad hogy legyen, régen így csinálták, legyél tisztában az alapokkal.

Aztán gyorsan rátérni a lényegre... symfony / laravel / egyéb console lib. Ma már ez az alap, kezdőknek is ezt kell tanítani.
10

Végigolvastam ismét a cikket,

Hidvégi Gábor · 2016. Már. 2. (Sze), 16.37
Végigolvastam ismét a cikket, sehol sem sugallja, hogy így kell, hanem csak mint lehetőséget említi meg.

Te viszont azt mondod, hogy symfony / laravel / egyéb console libet kell használni. Ezt bővebb kifejtés nélkül nehezen fogadom el: nem látom, miért lenne szükség ekkora rutinkönyvtárakra olyan esetekben, amit egy bash scripttel is meg lehet oldani (ha nem lehet, mert alkalmazáslogika van benne, az nyilvánvaló, de az meg projektfüggő).
11

getopt();

Gixx · 2016. Már. 2. (Sze), 17.56
Azért egy getopt();-ot összerakni bash-ben agyhalál. Legalábbis nekem. Minden paraméternél szét kell választani a kulcsot meg az értéket. És ha még egyenlőség-jelet vagy aposztrófokat is használunk... jaj :D

De persze bőven benne van a pakliban, hogy a bash-tudásom nem túl alapos, és csak magamat szivattam, amikor ezzel próbálkoztam :P
13

Passz, én nem értek hozzá.

inf3rno · 2016. Már. 3. (Cs), 22.51
Passz, én nem értek hozzá. Itt van egy lib, amit bash-ben írtak, talán választ találsz rá benne: https://github.com/git-ftp/git-ftp/blob/develop/git-ftp
14

Ö... izé... man getopt;

Há.Zé. · 2016. Már. 3. (Cs), 23.07
Ö... izé... man getopt; esetleg help getopt ? :)
16

jééé

Gixx · 2016. Már. 4. (P), 11.00
szóval magamat szivattam :D

Bár...:

Note that getopts is not able to parse GNU-style long options (--myoption) or XF86-style long options (-myoption)!


forrás
17

Azt nem mondtam, hogy

Há.Zé. · 2016. Már. 4. (P), 11.58
Azt nem mondtam, hogy tökéletes.
De ugye ott tartottunk, hogy shell. Bash-t nem igazán illik sem FPS játékok, sem adatbányászati eszközök írására használni. ;)

Ugyanígy kitartok azon véleményem mellett, hogy a PHP maradjon csak a weben, ha egyéb szkriptelős feladat adódik, arra van perl, python, ruby...
19

Mik az érveid?

Hidvégi Gábor · 2016. Már. 4. (P), 12.12
Mik az érveid?
21

Már leírtam: a PHP webre lett

Há.Zé. · 2016. Már. 4. (P), 15.17
Már leírtam: a PHP webre lett kitalálva, optimalizálva etc.
De mondok mást: PHP-t csak ott szokás telepíteni, ahol szükség is van rá. Linuxokon, unixokon nagyon ritka, ha python vagy perl nincs telepítve.
22

PHP

Hidvégi Gábor · 2016. Már. 4. (P), 15.23
A PHP annyiban több a hasonló scriptnyelveknél, hogy a PHP tag-ek közti szövegeket (<?php ?>ezt<?php ?>) változtatás nélkül adja vissza.

A PHP önmagában annyit csinál, hogy egy bejövő .php kiterjesztésű dokumentumot egy kimenő dokumentumba transzformál. Nincs benne semmilyen optimalizáció, ne keverd össze az interface-ével, ami lehet Apache, FastCGI vagy parancssor és társaik.

De mondok mást: PHP-t csak ott szokás telepíteni, ahol szükség is van rá. Linuxokon, unixokon nagyon ritka, ha python vagy perl nincs telepítve.
Ez egy webfejlesztő fórum, a négyes hozzászólásban leírtam, hogy a weboldalak 80%-át, de legalábbis tekintélyes részét php szolgálja ki, és valószínűsíthető, hogy az olvasók hasonló arányban ezzel a nyelvvel dolgoznak, így releváns számukra ez a blogmark.
18

... de lehet, hogy kissé elavult a forrásod ...

Há.Zé. · 2016. Már. 4. (P), 12.08
man getopt:

OPTIONS
-a, --alternative
Allow long options to start with a single '-'.

-h, --help
Display help text and exit. No other output is generated.

-l, --longoptions longopts
The long (multi-character) options to be recognized. More than one option name may be specified at once, by separating
the names with commas. This option may be given more than once, the longopts are cumulative. Each long option name in
longopts may be followed by one colon to indicate it has a required argument, and by two colons to indicate it has an
optional argument.
23

Simán meglehet...

Gixx · 2016. Már. 4. (P), 16.55
... mivel töredelmesen bevallom, nem vettem a fáradtságot, hogy nyissak egy konzolt, hogy megnézzem a man-t, viszont a google meg a fenti linkemet dobta a kérdésemre :((

Mindazonáltal én azt a szabályt használom:
- script (cron, worker, fixture stb), ami a PHP által kiszolgált oldal adatait használja / manipulálja: PHP script
- script, ami csak közvetve áll kapcsolatban a weboldallal, és nem igényel túlzott bűvészkedést (pl mysql dump, tmp cleanup, git post-commit hook stb): bash script