PDA

View Full Version : سوال: کار با فایل txt بوسیله php



SajadT2010
چهارشنبه 05 خرداد 1389, 21:24 عصر
سلام دوستان.
خسته نباشید.
ببینید مثلا سایت whois.domaintools.com وقتی آخرش اسم یه دامنه رو بزنی ازش whois میگیره. برای مثال http://whois.domaintools.com/google.com
حالا فرض کنید ما یه فایل txt داریم که داخلش برای مثال 10 تا خط هست که هر خطی یک دامنه توش نوشته شده.
حالا میخواهیم با استفاده از php شروع کنیم خط به خط فایل رو بخونیم و هر خطی رو بذاریم ته اون آدرس بالا (whois.domaintools.com) تا ازش whois بگیره و داخل مرورگر نشون داده بشه و مثلا 10 ثانیه بعد دوباره خط بعدی رو جاگذاری کنه و چک کنه و نشون بده.

سرچ کردم چیزی پیدا نکردم. ممنون میشم راهنمایی کنید.

rapidpich
پنج شنبه 06 خرداد 1389, 00:51 صبح
اگه سرورت لینوکسه میتونی whois yahoo.com رو اجرا کنی(exec) و خروجی رو چک کنی.

SajadT2010
پنج شنبه 06 خرداد 1389, 04:52 صبح
ممنون از شما.
اما این whois یک مثال بود.
میخوام این رو در جای دیگه استفاده کنم.
این مثال رو زدم تا روش کلی رو روشن کرده باشم.

binyaft
پنج شنبه 06 خرداد 1389, 06:26 صبح
سلام
فکر کنم این جواب بده

<?php
$file=file("ex.txt");
$count=count($file);
for($i=0;$i<$count;$i++){

echo("http://www.ex.com/$file[$i] <br>");
sleep(10);
}
?>

rapidpich
پنج شنبه 06 خرداد 1389, 11:06 صبح
آها حواسم نبود بجز جواب بالا که سریعترین راهه(از نظر میزان کد زدن) این هم کمکت میکنه:

http://www.php.net/manual/en/function.fread.php


مثالهاشو ببنی

SajadT2010
پنج شنبه 06 خرداد 1389, 13:19 عصر
درسته . همینو میخواستم.
اما یه مشکلی با sleep هست !
فرض کنید داخل ex.txt بیست خط باشه. ما همین فایل رو که اجرا میکنیم برای 20 خط هر کدوم 10 ثانیه صبر میکنه و در نهایت چاپشون میکنه ! یعنی 200 ثانیه صبر میکنه بعد یه دفعه همه رو چاپ میکنه.

در حالی که من میخوام هر 10 ثانیه یه خط رو چاپ کنه و نمایش بده و 10 ثانیه بعد خط بعدی رو چاپ کنه. برای این مورد باید چیکار کنم ؟!

Reza1607
پنج شنبه 06 خرداد 1389, 16:11 عصر
اول صفحه رو لود کن بعد با استفاده از ajax اطلاعات رو هر چند ثانیه که خواستی به سرور بفرست و نتیجه رو بگیر و چاپ کن

SajadT2010
پنج شنبه 06 خرداد 1389, 17:39 عصر
اول صفحه رو لود کن بعد با استفاده از ajax اطلاعات رو هر چند ثانیه که خواستی به سرور بفرست و نتیجه رو بگیر و چاپ کن
آجاکس اصلا کار نکردم. میشه یه نمونه اینطوری معرفی کنید ؟

pashaie
پنج شنبه 06 خرداد 1389, 19:53 عصر
بعد با استفاده از ajax اطلاعات رو هر چند ثانیه که خواستی به سرور بفرست و نتیجه رو بگیر و چاپ کنتو اینجا بدون استفاده از آجاکس هم کارت را میوفته!



<html>
<body>
<h2>Bingo!</h2>
<input type="text" id="urls" value="" size="60" />
<?php
$file=file("ex.txt");
$temp = array();
$count=count($file);
for($i=0; $i<$count;$i++){
$temp[] = urlencode("http://www.ex.com/{$file[$i]}");
}
?>
<script>
var data = new Array('<?php echo implode("','",$temp);?>')
function changeData(i){
document.getElementById('urls').value = unescape(data[i++]);
if(i>=<?php echo count($temp)?>)
return;
setTimeout('changeData('+i+')',10000);
}
changeData(0);
</script>

SajadT2010
جمعه 07 خرداد 1389, 00:40 صبح
دوستان تا به اینجا ممنون . آجاکسی رو هم میتونید توضیح بدید ؟

rapidpich
جمعه 07 خرداد 1389, 01:46 صبح
اول صفحه رو لود کن بعد با استفاده از ajax اطلاعات رو هر چند ثانیه که خواستی به سرور بفرست و نتیجه رو بگیر و چاپ کن


نه نه اصلا آژاکس رو بیخیال شو اگه کلاینت مشکلی واسش پیش بیاد dc شه یا هرچیزی دیگه اسکرپت کارشو نمیکنه. . از ob_start() و ob_flush() استفاده کن
اونوقت هرچی رو چاپ میکنه به خروجی میفرسته من قبلا واسه یکی توضیح دادم جستجو کنی پیداش میکنی

SajadT2010
جمعه 07 خرداد 1389, 06:25 صبح
نه نه اصلا آژاکس رو بیخیال شو اگه کلاینت مشکلی واسش پیش بیاد dc شه یا هرچیزی دیگه اسکرپت کارشو نمیکنه. . از ob_start() و ob_flush() استفاده کن
اونوقت هرچی رو چاپ میکنه به خروجی میفرسته من قبلا واسه یکی توضیح دادم جستجو کنی پیداش میکنی
اینو منظورته شما ؟


ob_start();
for ($i; $i <= 100 ; $i++){
echo $i;
ob_flush();
flush();
sleep(1);
} این خوبه اما دو تا مساله...
تابعی مثل clrscr در بعضی زبان های دیگه داخل php وجود داره که ما توی هر بار حلقه for در نهایت صفحه رو پاک کنیم و loop بعدی اجرا بشه ؟
یه مشکل اساسی هم این کد داره که اگه به فرض 10 خط داشته باشیم و بین هر کدوم 30 ثانیه فاصله بندازیم میشه 300 ثانیه که تایم اوت میشه.... اینو چیکارش کنیم که اذیت نکنه ؟!
اگه بشه این دو مشکلش رو برطرف کرد کار ما رو راه میندازه.

rapidpich
جمعه 07 خرداد 1389, 11:38 صبح
set_timeout(0); دیگه تایموت نمیده گرچه فکر میکنم یکی میگفت sleep جزء تایموت حساب نمیشه(یعنی یک sleep 10 باعث میشه تاموت هم 10 ثانیه بیشتر شه.
برای پاک کردن ببین این رو ویندوز کار میکنه؟




function cls()
{
array_map(create_function('$a', 'print chr($a);'), array(27, 91, 72, 27, 91, 50, 74));
}

SajadT2010
جمعه 07 خرداد 1389, 11:48 صبح
set_timeout(0); دیگه تایموت نمیده گرچه فکر میکنم یکی میگفت sleep جزء تایموت حساب نمیشه(یعنی یک sleep 10 باعث میشه تاموت هم 10 ثانیه بیشتر شه.
برای پاک کردن ببین این رو ویندوز کار میکنه؟




function cls()
{
array_map(create_function('$a', 'print chr($a);'), array(27, 91, 72, 27, 91, 50, 74));
}




تابع set_timeout رو گفت تعریف نشده.
اون یکی هم که برا clr دادی به نظر کامل نمیاد ! یه خورده توضیح میدی چیکار میکنه و به چه درد میخوره ؟!

rapidpich
جمعه 07 خرداد 1389, 17:48 عصر
set_time_limit


اینیکیم کار میکنه رو لینوکس ولی ویندوز رو تست نکردم.
هرجا خواستی تو کدت بنویس cls()