Autor | Zpráva | ||
---|---|---|---|
chvostik Profil |
#1 · Zasláno: 23. 11. 2013, 15:48:51
Zdravím, nedaří se mi absolutně nainstalovat APC funkce do XAMPPu. Potřebuju to kvůli funkci apc_fetch, která mi bude zobrazovat průběh uploadování dat jak je popsáno v http://php.vrana.cz/zobrazeni-prubehu-uploadu-prakticky.php. Stáhl jsem si knihovnu, dal ji do příslušné složky a v php.ini připsal extension=php_apc.dll ale prostě to nefunguje.
|
||
Davex Profil |
#2 · Zasláno: 23. 11. 2013, 17:18:26
chvostik:
„prostě to nefunguje“ Máš to rozbité. Restartoval jsi Apache? Zobrazuje se APC ve výpisu phpinfo() ?
Je stažená knihovna php_apc.dll zkompilována pro správnou verzi PHP, respektive PHP API ?
Je nějaká chyba v záznamu chyb Apache - error.log? Je zapnuté apc.rfc1867 ?
|
||
chvostik Profil |
#3 · Zasláno: 23. 11. 2013, 20:29:42 · Upravil/a: chvostik
Mno právěže v phpinfu APC není, ale háže to chybu PHP Fatal error: Call to undefined function apc_fetch(). Zapnuté apc.rfc1867 jeste není, ale dokud nejde zbytek je to zatím jedno si myslím. A co se týče verze tak tam je odchylka, že mám verzi XAMPPU 3.1.0 a v popisu je 3.1.10. Takže jedině, že bych skusil stahnout novější verzi XAMPPu ale php verze by měla bejt dobrá.
nepomohlo, mám tendle příkaz extension=php_apc.dll; dát někam přesně do php.ini nebo to je jedno? |
||
Davex Profil |
#4 · Zasláno: 24. 11. 2013, 00:06:17
chvostik:
„Mno právěže v phpinfu APC není“ Často se dělá chyba v tom, že se upravuje špatný soubor php.ini. Doporučuji upravovat ten uvedený ve výpisu phpinfo() - Loaded Configuration File. Pokud se knihovna z nějakého důvodu nenahraje při spuštění Apache, tak by měla být zaznamenána chyba v error.log.
„mám tendle příkaz extension=php_apc.dll; dát někam přesně do php.ini nebo to je jedno?“ Vhodné je dát ho hned skupinu ostatních direktiv extension= .
|
||
Krakatoa Profil |
Teď jsem si s tím hrál a bez problému mi funguje:
windows 8.1 64 bit apache 2.4.6 (64 bit, apachelounge.com) php 5.5.6 (64 bit, oficiální) php_apcu.dll (64 bit, apachelounge.com, z php 5.5.6 64 bit, verze apcu 4.0.2) php.ini: [apcu] extension=php_apcu.dll apc.rfc1867=On [PHP] post_max_size = 2000M upload_max_filesize = 2000M index.php <?php $id = uniqid(); ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Odeslání souboru</title> <script type="text/javascript"> function progress() { var xmlhttp; xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET","progress.php?id=<?php echo $id; ?>",false); xmlhttp.send(); document.getElementById("progress").innerHTML=xmlhttp.responseText; window.setTimeout(progress, 1000); } </script> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="hidden" name="APC_UPLOAD_PROGRESS" value="<?php echo $id; ?>"> <input type="file" name="fupload"><br> <input type="submit" onclick="window.setTimeout(progress, 1000);"> <span id="progress"></span> </form> <?php if (isset($_FILES['fupload'])) { print "název: ". $_FILES['fupload']['name'] ."<br>"; print "velikost: ". $_FILES['fupload']['size'] ." bajtů<br>"; print "dočasné umístění: ".$_FILES['fupload']['tmp_name'] ."<br>"; print "typ: ". $_FILES['fupload']['type'] ."<br>"; print "chyba: ". $_FILES['fupload']['error'] ."<br>"; move_uploaded_file($_FILES['fupload']['tmp_name'], $_FILES['fupload']['name']); } ?> </body> </html> progress.php <?php $progress = apc_fetch("upload_$_GET[id]"); echo ($progress ? number_format(100 * $progress["current"] / $progress["total"], 2) . "%" : ""); ?> Edit: Co se týče skriptu, bez problému funguje pouze ve firefoxu :-(, v IE11 pouze první vteřina, v google chrome vůbec (ale google ukazuje dole hodnotu i bez apcu). Původní skript z http://php.vrana.cz/zobrazeni-prubehu-uploadu-prakticky.php mi nefunguje ani v jednom prohlížeči. Kdyby někdo věděl jakej skript použít, aby fungoval přes apcu v IE 11, FF 25 a Chrome 31, tak poraďte. |
||
Jan Tvrdík Profil |
#6 · Zasláno: 24. 11. 2013, 10:20:47
Doplním, že alternativně lze od PHP verze 5.4.0 použít ke sledování průběhu uploadu i sessions. Viz php.net/manual/en/session.upload-progress.php.
|
||
chvostik Profil |
#7 · Zasláno: 24. 11. 2013, 12:50:21
Díky, ale ta instalace se mi pořád nepovedla upravuju tendle soubor: D:\xampp\php\php.ini.
[apcu] ;apc.rfc1867=On ;apc_extension="D:\xampp\php\ext\php_apc.dll" [PHP] ;post_max_size = 2000M ;upload_max_filesize = 2000M Hodil jsem tam todle + přidal ještě k ostatním extension=. extension=php_apc.dll a stejně furt nic. Taky jsem zkusil asi 4 ruzné php_apc.dll (ts,nts). Nemůže mi někdo ten soubor php.ini poslat? Fakt jste tam nepřidali ještě něco navíc? Jinak zkoušel jsem samozřejmě i vypnout apache i vypnout celyho xammpa a zapnout znova pro restart. |
||
juriad Profil |
#8 · Zasláno: 24. 11. 2013, 12:54:25 · Upravil/a: juriad
Odstraň ty středníky na začátcích řádků. Středník v .ini souboru značí komentář.
Na začátku php.ini je popis: ; The syntax of the file is extremely simple. Whitespace and lines ; beginning with a semicolon are silently ignored (as you probably guessed). |
||
chvostik Profil |
#9 · Zasláno: 24. 11. 2013, 13:34:40
Hurá, funguje :D, ale ten extension=php_apc.dll jsem zkoušel i bez středníku předtim a nic, ale možna jsem tam mel zrovna špatnej soubor nebo tak něco no :-). Tak ted snad jeste rozchodím ten skript :-p
|
||
Krakatoa Profil |
#10 · Zasláno: 24. 11. 2013, 13:50:00
chvostik:
Kdyby ti skript přes apcu fungoval v IE 11, FF 25 a Chrome 31, tak dej vědět jaký, mně se zatím nepodařilo vytvořit takový, aby mi fungoval ve všech třech prohlížečích. |
||
chvostik Profil |
#11 · Zasláno: 24. 11. 2013, 14:02:40
Mno právěže co se týče javascriptu tak jsem začátečník celkem takže s tím dost bojuju :-) zatím mi to nejde v tom firefoxu.
|
||
chvostik Profil |
#12 · Zasláno: 24. 11. 2013, 15:51:52
Mno tak už to cosi děla, ale spokojen nejsem :D. Jednak mi to vypíše rovnou 100% a taky jen pro jeden soubor (uploaduju jich víc). Dá se to nějak upravit pro více souboru? A jakej je rozdíl mezi tím tvojím skriptem:
function progress() { var xmlhttp; xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET","progress.php?id=<?php echo $id; ?>",false); xmlhttp.send(); document.getElementById("progress").innerHTML=xmlhttp.responseText; window.setTimeout(progress, 1000); } a function progress_update(xmlhttp) { if (xmlhttp.readyState == 4) { document.getElementById('progress').innerHTML = xmlhttp.responseText; window.setTimeout(progress_send, 1000); } } function progress_send() { send_xmlhttprequest(progress_update, 'GET', 'progress.php?id=<?php echo $id; ?>'); } Ten druhý mi ani nefunguje, ale nevím proč a nevím jestli nemá dělat něco navíc :-) |
||
Časová prodleva: 10 let
|
0