הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 06-12-06, 12:33   # 21
DCB
חבר על
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 966

DCB לא מחובר  

אפשר בjs (לא כל כך יודע איך)
ואפשר בפלאש.
  Reply With Quote
ישן 06-12-06, 13:40   # 22
Ori The Man
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: חיפה
גיל: 34
הודעות: 3,694
שלח הודעה באמצעות MSN אל Ori The Man Send a message via Skype™ to Ori The Man

Ori The Man לא מחובר  

אפשר ב PHP

הצגת פס התקדמות אמיתי כשמעלים קובץ גדול זו בקשה שכיחה, אבל די בעייתית ליישום ב-PHP
מכורח דרך הפעולה של העלאת קבצים.
קיים טלאי ל-PHP 4.4 ו-5.0 שמאפשר את ביצוע המטלה הזאת, אבל הוא דורש שינוי בקבצי
הליבה של PHP והידור מחדש. לפני חודשיים בערך טלאי דומה הוסף לענף של PHP 5.2 שמבטל
את הצורך בשינוי קבצי הליבה של PHP, אבל בכל זאת יש צורך בהתקנת הרחבה נוספת

המקור http://blog.bitflux.ch/archive/2006/...r-php-5-2.html

דוגמה
http://php5.bluga.net/UploadProgressMeter/demo.php

נילקח מפורום פרש
  Reply With Quote
ישן 07-12-06, 15:23   # 23
BlueNosE
אין כמו ב127.0.0.1
 
BlueNosE's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: כפ"ס
גיל: 32
הודעות: 4,086

BlueNosE לא מחובר  

ציטוט:
נכתב במקור על ידי tnadav צפה בהודעה
ב- PHP 5.2.0 נוספה האפשרות לעשות את זה.

למרבה העיצבון הריפרנס של PHP עוד לא התעדכן ולאף-אחד אין מושג איך עושים את זה

אני אישית מחפש את זה עכשיו כמו מטורף, הנה דוגמא של משהו ב- PHP שעובד:
http://php5.bluga.net/UploadProgressMeter/demo.php

או שצריך בשביל זה הרחבה, המצב לא כזה ברור...

עריכה
http://pecl.php.net/package/uploadprogress
אני רץ לבדוק את זה

עריכה 2
בעע.. זה קוד מקור ואין לי מהדר, אני לא רוצה להתעסק עם זה, מישהו יכול להביא גרסה מקומפלת? (זה בשביל השרת המקומי שלי ואני מריץ Windows XP אז קובץ DLL...)

ההיידר:
ציטוט:
/*
+----------------------------------------------------------------------+
| unknown license: |
+----------------------------------------------------------------------+
+----------------------------------------------------------------------+
*/

/* $ Id: $ */

#ifndef PHP_UPLOADPROGRESS_H
#define PHP_UPLOADPROGRESS_H

#ifdef __cplusplus
extern "C" {
#endif

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <php.h>

#ifdef HAVE_UPLOADPROGRESS

#include <php_ini.h>
#include <SAPI.h>
#include <ext/standard/info.h>

#ifdef __cplusplus
} // extern "C"
#endif
#ifdef __cplusplus
extern "C" {
#endif

extern zend_module_entry uploadprogress_module_entry;
#define phpext_uploadprogress_ptr &uploadprogress_module_entry

#ifdef PHP_WIN32
#define PHP_UPLOADPROGRESS_API __declspec(dllexport)
#else
#define PHP_UPLOADPROGRESS_API
#endif

typedef struct _uploadprogress_data {
char * identifier; /* full filename, or just the identifier, depending on method */
char * identifier_tmp; /* full filename, or just the identifier, depending on method */
time_t time_start;
time_t time_last;
unsigned int speed_average;
unsigned int speed_last;
unsigned long bytes_uploaded;
unsigned long bytes_total;
unsigned int files_uploaded;
int est_sec;
} uploadprogress_data;


static char * uploadprogress_mk_filename(char * identifier, char * template);

static void uploadprogress_file_php_get_info(char *, zval * );

PHP_MINIT_FUNCTION(uploadprogress);
PHP_MSHUTDOWN_FUNCTION(uploadprogress);
PHP_RINIT_FUNCTION(uploadprogress);
PHP_RSHUTDOWN_FUNCTION(uploadprogress);
PHP_MINFO_FUNCTION(uploadprogress);

#ifdef ZTS
#include "TSRM.h"
#endif


PHP_FUNCTION(uploadprogress_get_info);
#ifdef __cplusplus
} // extern "C"
#endif

#endif /* PHP_HAVE_UPLOADPROGRESS */

#endif /* PHP_UPLOADPROGRESS_H */


/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: noet sw=4 ts=4 fdm=marker
* vim<600: noet sw=4 ts=4
*/
הקובץ השני:
ציטוט:
/*
+----------------------------------------------------------------------+
| PHP Version 4 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2003 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 2.02 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available at through the world-wide-web at |
| http://www.php.net/license/2_02.txt. |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Christian Stocker (chregu@bitflux.ch) |
| Derived from: Doru Petrescu (pdoru-php-upm@kappa.ro) &#194; &#194; |
| http://pdoru.from.ro/upload-progress-meter/ |
+----------------------------------------------------------------------+

$Id: uploadprogress.c,v 1.1 2006/12/05 12:00:12 chregu Exp $
*/
/* $ Id: $ */

#include "php_uploadprogress.h"
#include "rfc1867.h"


#if HAVE_UPLOADPROGRESS

/* {{{ uploadprogress_functions[] */
function_entry uploadprogress_functions[] = {
PHP_FE(uploadprogress_get_info, NULL)
{ NULL, NULL, NULL }
};
/* }}} */

PHP_INI_BEGIN()
PHP_INI_ENTRY("uploadprogress.file.filename_templa te", "/tmp/upt_%s.txt", PHP_INI_ALL, NULL)
PHP_INI_END()



/* {{{ uploadprogress_module_entry
*/
zend_module_entry uploadprogress_module_entry = {
STANDARD_MODULE_HEADER,
"uploadprogress",
uploadprogress_functions,
PHP_MINIT(uploadprogress), /* Replace with NULL if there is nothing to do at php startup */
PHP_MSHUTDOWN(uploadprogress), /* Replace with NULL if there is nothing to do at php shutdown */
PHP_RINIT(uploadprogress), /* Replace with NULL if there is nothing to do at request start */
PHP_RSHUTDOWN(uploadprogress), /* Replace with NULL if there is nothing to do at request end */
PHP_MINFO(uploadprogress),
"0.0.1",
STANDARD_MODULE_PROPERTIES
};
/* }}} */

#ifdef COMPILE_DL_UPLOADPROGRESS
ZEND_GET_MODULE(uploadprogress)
#endif


extern int (*php_rfc1867_callback)(unsigned int , void *, void ** TSRMLS_DC);

static int uploadprogress_php_rfc1867_file(unsigned int event, void *event_data, void **data TSRMLS_DC)
{
zval handler;
char *callable = NULL;
uploadprogress_data * progress;
int read_bytes;

progress = *data;
if (event == MULTIPART_EVENT_START) {
multipart_event_start *e_data;
e_data = (multipart_event_start*) event_data;
progress = emalloc( sizeof(uploadprogress_data) );
progress->bytes_total = e_data->content_length;
progress->identifier = NULL;
progress->identifier_tmp = NULL;
progress->time_start = time(NULL);
*data = progress;
} else if (event == MULTIPART_EVENT_FORMDATA) {

multipart_event_formdata *e_data;
e_data = (multipart_event_formdata*) event_data;
read_bytes = e_data->post_bytes_processed;
if (e_data->newlength) {
*e_data->newlength = e_data->length;
}

if (strcmp(e_data->name, "UPLOAD_IDENTIFIER") == 0) {

char * template = INI_STR("uploadprogress.file.filename_template");
if (strcmp(template, "") == 0) {
return 0;
}

progress->time_last = time(NULL);
progress->speed_average = 0;
progress->speed_last = 0;
progress->bytes_uploaded = read_bytes;
progress->files_uploaded = 0;
progress->est_sec = 0;
progress->identifier = uploadprogress_mk_filename(*e_data->value, template);
progress->identifier_tmp = emalloc(strlen( progress->identifier) + 4);
sprintf( progress->identifier_tmp, "%s.wr", progress->identifier );
}
}

if (progress->identifier) {

if (event == MULTIPART_EVENT_FILE_START) {
multipart_event_file_start *e_data;

e_data = (multipart_event_file_start*) event_data;
read_bytes = e_data->post_bytes_processed;

} else if (event == MULTIPART_EVENT_FILE_DATA) {
multipart_event_file_data *e_data;

e_data = (multipart_event_file_data*) event_data;
read_bytes = e_data->post_bytes_processed;


} else if (event == MULTIPART_EVENT_FILE_END) {
multipart_event_file_end *e_data;

e_data = (multipart_event_file_end*) event_data;

read_bytes = e_data->post_bytes_processed;
progress->files_uploaded++;
} else if ( event == MULTIPART_EVENT_END ) {
VCWD_UNLINK( progress->identifier );
efree( progress->identifier );
efree( progress->identifier_tmp );
efree( progress );

return 0;

}

time_t crtime = time(NULL);
int d,dt,ds;

if (progress->time_last > crtime) { /* just in case we encounter a fracture in time */
progress->time_start = progress->time_last = crtime;
}

dt = crtime - progress->time_last;
ds = crtime - progress->time_start;
d = read_bytes - progress->bytes_uploaded;


if (dt) {
progress->speed_last = d/dt;

progress->time_last = crtime;
progress->bytes_uploaded = read_bytes;

progress->speed_average = ds ? read_bytes / ds : 0;
progress->est_sec = progress->speed_average ? (progress->bytes_total - read_bytes) / progress->speed_average : -1;
}
if (dt || event >= MULTIPART_EVENT_FILE_END) {


FILE *F;
F = VCWD_FOPEN(progress->identifier_tmp, "wb");
if (F) {
fprintf(F, "time_start=%d\ntime_last=%d\nspeed_average=%d\nsp eed_last=%d\nbytes_uploaded=%d\nbytes_total=%d\nfi les_uploaded=%d\nest_sec=%d\n",
progress->time_start, progress->time_last,
progress->speed_average, progress->speed_last,
progress->bytes_uploaded, progress->bytes_total,
progress->files_uploaded,
progress->est_sec );
fclose(F);
VCWD_RENAME(progress->identifier_tmp,progress->identifier);
}
}


}
if (event == MULTIPART_EVENT_END ) {
if (progress->identifier) {
efree( progress->identifier );
}
if (progress->identifier_tmp) {
efree( progress->identifier_tmp );
}
efree( progress );

}
}


/* {{{ PHP_MINIT_FUNCTION */
PHP_MINIT_FUNCTION(uploadprogress)
{
REGISTER_INI_ENTRIES();
php_rfc1867_callback = uploadprogress_php_rfc1867_file;

/* add your stuff here */

return SUCCESS;
}
/* }}} */


/* {{{ PHP_MSHUTDOWN_FUNCTION */
PHP_MSHUTDOWN_FUNCTION(uploadprogress)
{

UNREGISTER_INI_ENTRIES();
php_rfc1867_callback = NULL;

/* add your stuff here */


return SUCCESS;
}
/* }}} */



/* {{{ PHP_RINIT_FUNCTION */
PHP_RINIT_FUNCTION(uploadprogress)
{
/* add your stuff here */


return SUCCESS;
}
/* }}} */


/* {{{ PHP_RSHUTDOWN_FUNCTION */
PHP_RSHUTDOWN_FUNCTION(uploadprogress)
{
/* add your stuff here */

return SUCCESS;
}
/* }}} */


/* {{{ PHP_MINFO_FUNCTION */
PHP_MINFO_FUNCTION(uploadprogress)
{
char buffer[ 512 ] ;
php_info_print_table_start() ;

php_info_print_table_header( 2, "uploadprogress support", "enabled" ) ;
snprintf( buffer, 512, "0.3.0-beta");

php_info_print_table_row( 2, "Version", buffer ) ;

php_info_print_box_end();
/* add your stuff here */

}


/* }}} */




/* {{{ proto bool uploadprogress_register(callback callback)
*/

PHP_FUNCTION(uploadprogress_get_info)
{
char * id;
int id_lg;
char method;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_lg) == FAILURE) {
return;
}

return uploadprogress_file_php_get_info( id, return_value );

RETURN_FALSE;
}

static char * uploadprogress_mk_filename(char * identifier, char * template)
{
char * x;
char * filename;

filename = emalloc( strlen(template) + strlen(identifier) + 3 );

x = strstr( template, "%s" );
if (x==NULL) {
sprintf( filename, "%s/%s", template, identifier );
}else{
strcpy( filename, template );
strcpy( filename + (x - template), identifier );
strcat( filename, x+2 );
}
return filename;
}

static void uploadprogress_file_php_get_info(char * id, zval * return_value)
{
char s[1024];
char * filename;
FILE *F;
TSRMLS_FETCH();

char * template = INI_STR("uploadprogress.file.filename_template");


if (strcmp(template, "") == 0) {
return;
} else {
filename = uploadprogress_mk_filename( id, template );
if (!filename) return;

F = VCWD_FOPEN(filename, "rb");

if (F) {
array_init(return_value);

while ( fgets(s, 1000, F) ) {
char *k, *v, *e;
e = strchr(s,'=');
if (!e) continue;

*e = 0; /* break the line into 2 parts */
v = e+1;
k = s;

/* trim spaces in front and after the name/value */
while (*k && *k <= 32) v++;
while (*v && *v <= 32) v++;
for (e=k; *e; e++) if (*e <= 32) { *e = 0; break; }
for (e=v; *e; e++) if (*e <= 32) { *e = 0; break; }

add_assoc_string( return_value, k, v, 1 );
}
fclose(F);
}

if (filename) efree(filename);
return;
}
}



#endif /* HAVE_UPLOADPROGRESS */


/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: noet sw=4 ts=4 fdm=marker
* vim<600: noet sw=4 ts=4
*/

ובקשר לבקשה... אולי עם FLUSH?
__________________
עומר,
admin [@] rely.co.il

בניית אתרים Rely

סלנג מילון סלנג utter
  Reply With Quote
ישן 07-12-06, 15:28   # 24
tnadav
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2006
הודעות: 216

tnadav לא מחובר  

ציטוט:
נכתב במקור על ידי BlueNosE צפה בהודעה
ההיידר:


הקובץ השני:



ובקשר לבקשה... אולי עם FLUSH?
FLUSH?

אני צריך קובץ DLL.. אין לי מהדר לא היידר.

צריך לקמפל את הקבצים האלו עם מהדר, ואין לי כוח ללמוד איך להתעסק עם זה.

זה גם לא נוסה על Windows עדיין
__________________
"אני לא מעצב גרפי... אני לא פלאשר תותח... בטח שלא מנכ"ל של חברת בניית אתרים, כעיקרון אסור לי להיות מועסק.. אבל אני... מתכנת ב-PHP , וגם, לא ממש מציעה.." (יצא לי מוזר משהו...חח)
  Reply With Quote
ישן 07-12-06, 15:35   # 25
BlueNosE
אין כמו ב127.0.0.1
 
BlueNosE's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: כפ"ס
גיל: 32
הודעות: 4,086

BlueNosE לא מחובר  

ציטוט:
נכתב במקור על ידי tnadav צפה בהודעה
FLUSH?

אני צריך קובץ DLL.. אין לי מהדר לא היידר.

צריך לקמפל את הקבצים האלו עם מהדר, ואין לי כוח ללמוד איך להתעסק עם זה.

זה גם לא נוסה על Windows עדיין
ולי יש את הקבצים וחשבתי שאתה צריך את המקור שלהם.
חכה שניה.

ואגב, מה FLUSH?

עריכה:
אני צריך קובץ בשם rfc1867.h ואין לי אותו בתיקייה של האינקלודס אז אני לא יכול לקמפל
עריכה 2:
הורדתי את זה ואת SAPI.h שגם צריך ושוב יש שגיאות:
23 C:\Dev-Cpp\include\SAPI.h `MAX_PATH' undeclared here (not in a function)
25 D:\Documents and Settings\BlueNosE\&#249;&#229;&#236;&#231;&#239; &#228;&#242;&#225;&#229;&#227;&#228;\uploadprogres s-0.3.0\uploadprogress.c In file included from D:\Documents and Settings\BlueNosE\&#249;&#229;&#236;&#231;&#239; &#228;&#242;&#225;&#229;&#227;&#228;\uploadprogres s-0.3.0\uploadprogress.c
28 C:\Dev-Cpp\include\rfc1867.h syntax error before "SAPI_POST_HANDLER_FUNC"

ועוד.. :S
__________________
עומר,
admin [@] rely.co.il

בניית אתרים Rely

סלנג מילון סלנג utter

Last edited by BlueNosE; 07-12-06 at 15:53..
  Reply With Quote
ישן 07-12-06, 17:43   # 26
O-B
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: בבית
גיל: 35
הודעות: 1,423
שלח הודעה באמצעות ICO אל O-B

O-B לא מחובר  

אפשר לעשות את זה בפלאש וזה מאוד פשוט לדעתי...
הקובץ פלאש מקבל ב GET את הגודל של הקובץ ואת המהירות ומחשב..
ולפי זה הוא גם מעלה את אורך הבאר..
__________________
בברכה עובד, מפתח אתרים.
  Reply With Quote
ישן 07-12-06, 19:06   # 27
RS324
תודה על תרומתך.
 
מיני פרופיל
תאריך הצטרפות: May 2006
הודעות: 3,173

RS324 לא מחובר  

ציטוט:
נכתב במקור על ידי O-B צפה בהודעה
אפשר לעשות את זה בפלאש וזה מאוד פשוט לדעתי...
הקובץ פלאש מקבל ב GET את הגודל של הקובץ ואת המהירות ומחשב..
ולפי זה הוא גם מעלה את אורך הבאר..
כן רק שאם אני לא טועה...יש לך בעיה לגלות את גודל הקובץ לפני שהוא הועלה...לפחות ב PHP...
ואני לא חושב שיש לך דרך ממשית לבדוק מהירות של משתמש...
  Reply With Quote
ישן 07-12-06, 19:24   # 28
tnadav
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2006
הודעות: 216

tnadav לא מחובר  

ציטוט:
נכתב במקור על ידי RS324 צפה בהודעה
כן רק שאם אני לא טועה...יש לך בעיה לגלות את גודל הקובץ לפני שהוא הועלה...לפחות ב PHP...
ואני לא חושב שיש לך דרך ממשית לבדוק מהירות של משתמש...
וצריך גם לסדר את ההעלאה שתהיה ב- AJAX
__________________
"אני לא מעצב גרפי... אני לא פלאשר תותח... בטח שלא מנכ"ל של חברת בניית אתרים, כעיקרון אסור לי להיות מועסק.. אבל אני... מתכנת ב-PHP , וגם, לא ממש מציעה.." (יצא לי מוזר משהו...חח)
  Reply With Quote
ישן 08-12-06, 15:12   # 29
opsite
משתמש תחת חוזה ניסיון
 
מיני פרופיל
תאריך הצטרפות: Jun 2006
גיל: 35
הודעות: 1,854
שלח הודעה באמצעות ICO אל opsite

opsite לא מחובר  

אני לא מחפש אם מהירות העלאה .. חשוב לי כמה זמן נשאר לסיום .. אם אחוזים וזהו ..

לא יותר
__________________
צחי אוחיון , מתכנת אתרים , בונה אתרים , קידוד אתרים .
Php - Html - Css - Js
פרטים נוספים : 052-5-819366 -> eMail - zahiohayon@gmail.com
העלאת קבצים|מזרחית|סינגלים
  Reply With Quote
ישן 08-12-06, 15:33   # 30
tnadav
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2006
הודעות: 216

tnadav לא מחובר  

ציטוט:
נכתב במקור על ידי opsite צפה בהודעה
אני לא מחפש אם מהירות העלאה .. חשוב לי כמה זמן נשאר לסיום .. אם אחוזים וזהו ..

לא יותר
וצריך לקבל את הנתון הזה מאיפשהו
__________________
"אני לא מעצב גרפי... אני לא פלאשר תותח... בטח שלא מנכ"ל של חברת בניית אתרים, כעיקרון אסור לי להיות מועסק.. אבל אני... מתכנת ב-PHP , וגם, לא ממש מציעה.." (יצא לי מוזר משהו...חח)
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 01:42.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ