| 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: 12 let
|
|||
0