Autor | Zpráva | ||
---|---|---|---|
sniclman Profil |
#1 · Zasláno: 2. 3. 2016, 11:10:53
Ahoj,
potřeboval bych poradit s se sloučením PHP scriptů do jednoho souboru. mám následující soubory: //test1.php <? echo 'toto je první soubor bez ukončení'; //test2.php <? echo 'toto je druhý soubor bez ukončení'; A potřebuji z nich udělat tohle: //sloucenyskript.php <? echo 'toto je první soubor bez ukončení'; ?> <? echo 'toto je druhý soubor bez ukončení'; <? echo 'toto je první soubor bez ukončení'; echo 'toto je druhý soubor bez ukončení'; Předěm děkuji za veškeré nzory a rady. |
||
xaverista Profil |
<?php include "test1.php"; include "test2.php"; |
||
sniclman Profil |
#3 · Zasláno: 2. 3. 2016, 21:59:42
xaverista:
include, require běžně používám. Potřebuji soubory sloučit (případně ještě nějakým jiným scriptem poupravit, minifikovat atd...) a dát si je do rádoby cache. |
||
Keeehi Profil |
#4 · Zasláno: 3. 3. 2016, 01:03:01
sniclman:
„Potřebuji soubory sloučit“ Proč? Pochopil bych to u CSS, u JS, případně u šablon. S nutností minifikovat PHP jsem se ještě nesetkal. |
||
Martin2 Profil * |
#5 · Zasláno: 3. 3. 2016, 01:54:55
Keeehi:
„S nutností minifikovat PHP jsem se ještě nesetkal.“ Větší knihovny nebo frameworky se minifikují běžně. Trochu to šetří prostředky serveru a líp se s nimi manipuluje na produkčním serveru. Samotné aplikace/weby se ale takto většinou neupravují. sniclman: „Potřebuji soubory sloučit (případně ještě nějakým jiným scriptem poupravit, minifikovat atd...) a dát si je do rádoby cache.“ Od verze 5.2 umí PHP pracovat s PHP archivy (Phar). Je to přesně to, co požaduješ – komprimovaný archiv souborů, který můžeš celý includovat nebo i transparentně pracovat s jeho částmi pomocí phar stream wrapperu. |
||
sniclman Profil |
#6 · Zasláno: 3. 3. 2016, 09:34:17
Keeehi:
Potřebuji to pro šablonu. Martin2: Phar jsem zkoušel, problém je že na serveru je nastaveno phar.readonly = 1. Takže mi achrivování do phar nefunguje. Tady je phpinfo() nastavení PHAR Phar EXT version 2.0.1 Phar API version 1.1.1 SVN revision $Id: 21d763042eb5769ae0a09dc1118df2b5aae6fb33 $ Phar-based phar archives enabled Tar-based phar archives enabled ZIP-based phar archives enabled gzip compression enabled bzip2 compression enabled Native OpenSSL support enabled phar.cache_list no value no value phar.readonly On On phar.require_hash On On Přístup do php.ini nemám protože se jedná o wehosting od onebit.cz. Nastavení v .user.ini také nefunguje. |
||
Joker Profil |
#7 · Zasláno: 3. 3. 2016, 09:39:31
sniclman:
A je nějaký problém si ten archiv vytvořit u sebe? |
||
sniclman Profil |
#8 · Zasláno: 3. 3. 2016, 10:11:49
Joker:
Manuální vytváření achrivů postrádá jakýkoliv smysl. To bych mohl už rovnou manuálně slučovat všechny soubory. Potřebuji automatizovaný systém. |
||
Martin2 Profil * |
#9 · Zasláno: 3. 3. 2016, 11:01:00
sniclman:
„Potřebuji automatizovaný systém.“ K tomu Phar neslouží. Ujasni si, jestli chceš zjednodušit deployment nebo řešit runtime cache. Ve druhém případě se vykašli na minifikaci a slučování, protože to na to nemá vůbec žádný vliv. Od verze 5.5 obsahuje PHP extenzi Opcache, která akceleruje běh prostředí – pokud ji máš zapnutou, nemá vcelku smysl dělat nic dalšího. |
||
Joker Profil |
#10 · Zasláno: 3. 3. 2016, 11:31:41
sniclman:
„Potřebuji automatizovaný systém.“ Však se to může dělat klidně automaticky. Problém by nastal až ve chvíli, kdy by bylo potřeba to dělat opakovaně a dynamicky za běhu aplikace. |
||
Martin2 Profil * |
#11 · Zasláno: 3. 3. 2016, 11:42:55
Joker:
„Však se to může dělat klidně automaticky.“ Na produkčním serveru nebývá nikdy phar.readonly vypnuté, takže automaticky jedině na vývojovém stroji před deploymentem.
|
||
Joker Profil |
#12 · Zasláno: 3. 3. 2016, 12:33:39
Martin2:
Ano, tak jsem to myslel. Udělat automaticky na vývojovém stroji a pak přenést. Dokud není potřeba to dělat dynamicky za běhu aplikace, neměl by být problém. |
||
sniclman Profil |
#13 · Zasláno: 3. 3. 2016, 14:03:05
Co třeba tohle:
//$content = přečtený soubor přes fopen $content = preg_replace('/<\?(((?!\?>).)*)\?>/s', '', $content); if(preg_match('/<\?/s', $content, $output)){echo 'Omitted end tag for php';} detekce zda je php skript ukončen Vymaže všechny ukončený <?.....?> a zjistí zda je tam někde neukončený <? Pokud ano tak přidá na konec ?> pak by se ze sloučených skriptů dalo udělat tohle: <? echo 'toto je první soubor bez ukončení'; ?> <? echo 'toto je druhý soubor bez ukončení'; |
||
Joker Profil |
#14 · Zasláno: 3. 3. 2016, 14:16:45
sniclman:
Je nějak dané, co je obsahem těch souborů. Dovolím si připomenout, že stejné symboly používají procesní instrukce SGML/XML, takže jestli některý ten skript může generovat např. XML kód, asi bych se do toho nepouštěl. Kromě toho mám zkušenost, že regulární výrazy používající konstrukce jako tvrzení o následujícím bývají docela pomalé. |
||
sniclman Profil |
#15 · Zasláno: 3. 3. 2016, 18:49:59
Joker:
No... není to zrovna štastné řešení. Nenapadá mě žádný jiný způsob jak detekovat konec PHP skriptu. |
||
Časová prodleva: 20 dní
|
|||
sniclman Profil |
#16 · Zasláno: 24. 3. 2016, 00:20:28
Update vyhledávání neukončených PHP tagů
preg_match_all('/\<\?((?!(\?\>)).)*$/s', $content, $matches); Zatím funguje dobře. uvidím jestli se časem neobjeví nějaká chyba |
||
Jan Tvrdík Profil |
#17 · Zasláno: 24. 3. 2016, 01:23:23
sniclman:
Já pořád nechápu, o co se vlastně snažíš. |
||
sniclman Profil |
#18 · Zasláno: 24. 3. 2016, 09:38:58
Jan Tvrdík:
Nejde pouze o sloučení souborů. Soubory se budou ještě pomocí dalších skriptů upravovat (např: úpravy šablonových proměnných). |
||
Jan Tvrdík Profil |
#19 · Zasláno: 24. 3. 2016, 15:31:59
sniclman:
Takže programuješ vlastní šablonovací systém? |
||
Časová prodleva: 9 let
|
0