خواندن تمامی محتوای این فایل zip بدون دستور extractTo

imanmir

Member
با سلام دوستان من یک قطعه کد می گذارم لطفا ببینید
من یک فایل zip شده دارم که حاوی یک فایل sql است من نمی خوام extractTo کنم که حجمش فرقی نکنه
من الان تو کد تونستم به محتوا دسترسی داشته باشم ولی داره فقط یک سطر را می خونه من می خوام کلشو برگردونه یعنی 3 بار insert کنه چون 3 تا رکورد می باشد و این یک مثال است شاید 200000 رکورد باشد می خواهم ببینید کجای کدم باید اصلاح بشه ممنون
 

پیوست ها

  • cod.zip
    1.2 کیلوبایت · بازدیدها: 8

imanmir

Member
باسلام

مرسی از اخطارتون

بله من اولین نیازم حجم فایله چون فایل sql می باشد شاید گاهی حجمش به 100 مگابایتم بشه ولی وقتی زیپ می شه تبدیل به 7 مگابایت می شه پس ارزش داره روش وقت بزاریم ولی اگه از extract to استفاده کنیم فایل با همون حجمه 100 مگابایت باز خوانده می شه و بی فایده است چون فایل را باز می کنه و یک جا استخراج می کنه پس نمی تونی از این روش استفاده کنیم پس می ریم سراغ روش بهتر بدون استخراج فایل فقط فایل را بخونه که ویژه فایل های متنی هستش به روش زیر من ابتدا فایل را باز کرده و در اختیار می گیریم
//php cod

if ($z->open('ddda.zip'))
{
$fp = $z->getStream('ddda.sql');

//php cod

خوب مرحله بعد خواندن محتوای فایل

$contents='';

$size=filesize("ddda.zip")*2;

while(!feof($fp))
{

$contents.= fread($fp,$size);


مرحله آخر کد جداسازی و پیمایش رکورد ها داخل فایل متنی جهت اینسرت در دیتا بیس
$tbnamekham=substr($contents,12,5);

if($tbnamekham=="login")
{

$akham=explode("values",$contents);
$akham2=explode(",",$akham[1]);
$sematlogin="D";
$loign_age_clinet=$akham2[1];

$login_dr_clinet=$akham2[2];
$login_name=$akham2[3];
$login_family=$akham2[4];

}

{
تا اینجا مشکلی نیست ولی وقتی مثلا می گم

echo $login_family
فقط اولین رکورد را پیمایش کرده
مشکل :
اینجاست که می خواهم همه فایل را پیمایش کنه و وقتی زدم نمایش بده مثلا فامیلی را فامیلی ها همه رکوردها نمایش داده بشه

مرسی
 

Masoud1365

مدیر انجمن
ببینید اگر که شما با حجم زیاد فایل برای ایمپورت مشکل دارید میتونید از big_dump و اینا استفاده کنید ( توی انجمن یه سرچ بزنید هست )
 

imanmir

Member
با سلام

من مشکلم با حجم هست ولی وقتی میشه حجم رو 20 برابر کم کرد و بعد ارسال کرده که چرا اینکار رو بکنویم
لطفا کد بالا را نگاه کنید و بگید مشکل کجاست من می خواهم zip کنم بعد ارسال و محتوای فایلم را بخونم بدون دستور extract to همین
مرسی
 

Masoud1365

مدیر انجمن
من تا حالا بدون دستور extractto تست نکردم و نمیدونم که چطوری محتوای فایل رو بخونم اما همونطوری که در قبل هم گفتم اگر شما با حجم فایلی که میخواهید ایمپورت کنید مشکل دارید راهش استفاده big_dump یا ای جکس هست !
 

imanmir

Member
با سلام

شما تا به حال کد را تست کردید
دقیقا داره بدون دستور exract to محتوا را می خونه چون فایل تکس می خونه و مشکل نداره ولی داره فقط یک سطر فایل را می خونه من می خواهم همه را بخونه شاید اصلا مشکل از مبحثهای zip و ... نباشه مشکل من الان دسترسی و یا خواندن فایل نیست مشکل من خواندن کامل فایل هستش
لطفا یک بار کد را تست کنید
با تشکر
 

imanmir

Member
با سلام

آقا مسعود لطفا کد گذاشته شده را نگاه کنید
فکر کنید ما یک رشته متن داریم می خواهم جدا کنم مقداری رو ازش
ولی وقتی اینکار را می کنم به سراغ خط بعدی نمیره خط اول را دوبار تکرار می کنه
ببینید مشکل از کجاست
خروجی درست باید c,d باشه ولی الان داره c,c چاپ می کنه
 

پیوست ها

  • t.zip
    370 بایت · بازدیدها: 1

Masoud1365

مدیر انجمن
خب شما یه رشته رو دادید و با استفاده از explode یک رشته رو به چند قسمت تقسیم کردید ! کد شما از نظر منطقی کاملا درست هست !
این رو ببینید :
PHP:
<?php
 $t="INSERT INTO login (login_sematlogin) values ('D');
 INSERT INTO login (login_sematlogin) values ('C');";
echo "test File:<p>".$t."<p>";
echo"Output File:";

for($i=1;$i<=2;$i++)
{
	//echo $i;
$tbnamekham=substr($t,12,5);
if($tbnamekham=="login")
{
		$akham=explode("values",$t);
		//echo $akham[2];
}
echo '<PRE>';
print_r($akham);
echo '</PRE>';		
}

?>
در حقیقت شما داری 2 بار یک کد رو اجرا میکنید !
 

Masoud1365

مدیر انجمن
من فکر کنم که منظور شما این بوده :
PHP:
<?php
 $t="INSERT INTO login (login_sematlogin) values ('D');INSERT INTO login (login_sematlogin) values ('C');";
//echo "test File:<p>".$t."<p>";
//echo"Output File:";
$t = explode(';',$t);
for($i=0;$i<2;$i++)
{
	//echo $i;
    $tbnamekham=substr($t[$i],12,5);
        if($tbnamekham=="login")
        {
        		$akham=explode("values",$t[$i]);
        		echo $akham[1];
        }		
}

?>
 

imanmir

Member
هیچی

مورد خاصی نبود فقط یک سوال
من الان آپلودم به صورت zip بدون extract to درسته و مشکلی نیست ولی چون کاربر می خواد اینکار روی کنه کاربر پسند بودنش برام مهمه
یک سری اطلاعات هست که من توی یک سایت دیگه دیدم که فکر می کنم برای همه دوستان که با آپلود سر رو کار دارم کاربردی باشه
در زمان آپلود فایل
موارد شامل :
1-یک لودینک تا 100% می یاد
2-حجم کل فایل
3-سرعت آپلود بر اساس KB/s
4-زمان باقی مانده

حالا آقا مسعود می خواستم ببین برای موارد 1و3و4 چه راهنمایی می تونید بکنید و تو اینترنت گشتم چیزی پیدا نکردم
نمونه سایت
http://image.online-convert.com/convert-to-png
 

Masoud1365

مدیر انجمن
اسکریپت این مدلی زیاد هست !
یه سرچی بزنید ! یه آپلودر با jquery دیدم دقیقا همینطوری بود ! یکیشو دانلود کنید و بررسیش کنید !
شما کلا مقدار آپلود شده + سرعت رو که به دست بیارید تمامی اطلاعات مثل زمان باقی مانده و لودینگ و ... رو میتونید اضافه کنید !
 

imanmir

Member
مشکل مججد

من یک آپلودر خوب پیدا کردم ولی هر جا رو دیدم پیدا نکرم که زمانی و آپلود را می زنم کدم اجرا بشه آخه من آپلود نمی خوام که یک چیزی رو کپی کنه ،می خوام یک فال زیپ را انتخاب کنه بعد آپلود را زد کد منم را بخونه که محتوای داخل فایل زیپ را می خونه که یک فایل متنی و بعد اینسرت می کنه این کدم من اوکیش کردم که فایل زیپ را می خونهه ... فقط نمی دونم کجا کد این آپلودر بذارم که این کار روی بکنه
 

پیوست ها

  • uploader.zip
    22 کیلوبایت · بازدیدها: 2
  • zipread.zip
    793 بایت · بازدیدها: 2

Masoud1365

مدیر انجمن
سوالتون رو در یک تاپیک جداگانه پیگیری کنید !
( بحث آپلودر و اینا به این بخش مربوط نمیشه + لودینگ و سرعت آپلود به صورت لحظه ای و ... به انجمن ای جکس مربوط میشه ! )
 

جدیدترین ارسال ها

بالا