PDA

View Full Version : سوال: رفرش یک صفحه از صفحه ی دیگر ؟؟



mosi2007
دوشنبه 08 خرداد 1391, 18:24 عصر
سلام
دوستان یک صفحه داریم که باید از طریق یک صفحه دیگه ای رفرش بشه
میخوام وقتی صفحه اولی لود شد خود بخود صفحه دومی رفرش بشه
ار این استفاده کردم ولی وقتی صفحه اولی لود میشه سریع محتویات صفحه عوض میشه

<meta http-equiv="refresh" content="0; url=writexml.php"/>

نمیخوام صفحه عوض بشه فقط باید از داخل صفحه اولی این صفحه(writexml.php) رفرش بشه

امیدوارم منظورمو خوب رسونده باشم
ممنون میشم جواب بدید

MSN_Issue
دوشنبه 08 خرداد 1391, 19:25 عصر
منظورتون از صفحه ی اول و دوم یه کم مبهمه !!!
این دوتا صفحه داخل هم هستند ؟ (یکی داخل دیگری ؟) یا ... ؟

mosi2007
دوشنبه 08 خرداد 1391, 19:56 عصر
منظورتون از صفحه ی اول و دوم یه کم مبهمه !!!
این دوتا صفحه داخل هم هستند ؟ (یکی داخل دیگری ؟) یا ... ؟

نه داخل هم دیگه نیست

دوست عزیز مثلا یه صفحه داریم به نام index.php و یکی هم به نام writexml.php تا اینجا که هیچی
حالا ما همیشه صفحه index.php را لود میکنیم یا رفرش فرقی نداره (از تو مرورگر ) تا اینجا که دوباره هیچی
حالا ما میخوایم که هر دفعه صفحه index.php لود یا رفرش شد یه دستوری تو همین صفحه ایندکس باشه که با هر بار لود شدن یا رفرش خودش این صفحه writexml.php را هم رفرش کنه

colors
دوشنبه 08 خرداد 1391, 20:10 عصر
درود

میتونی توسط ajax در صفحه دومی بررسی کنی که آیا صفحه اول رفرش شده اگر درست بود خودش رو رفرش کنه.

به این صورت میتونی کار کنی که یه شمارنده بزار تو صفحه اول و در صفحه دوم توسط ajax مقدار شمارنده رو بخون و اگر از 0 بزرگتر بود 0 رو تو یه متغیر بنداز وصفحه رو رفرش کن. ( شمارنده رو میتونی تو یه فایل یا بانک ذخیره کنی )
بعد تو الان اون مقدار 0 رو گرفتی که صفحه رو رفرش کردی . و همین کارو ادامه میدی تا زمانی که مقدار شمارنده از این مقدارت بزرگتر بشه ( مثلا بشه 1 ) در این صورت متغییرت رو تغیر بده و مقدار جدید ( که همون 1 هست) رو بریز توش و صفحه رو رفرش کن و همین کارو ادامه بده...

دقت کن که تو صفحه اول یه شمارنده بزاری که هر وقت صفحه رفرش شد یکی به اون اظافه کنه.

نمیدونم گرفتی یا نه؟
موفق باشی

Unique
دوشنبه 08 خرداد 1391, 20:29 عصر
اگر قصدت از Refresh صفحه writexml.php در زمان فراخوانی صفحه index اینه که کدش قبل از بارگزاری صفحه index انجام بشه ! میتونی با curl اون را از صفحه index فراخونی کنی !
اما من فکر میکنم شما میخوای به محتوای xml که writexml.php تولید میکنه دسترسی داشته باشی ! که این روش کار زیاد جالب نیست و میتونی کاری که در این صفحه انجام میشه را توی همون index انجام بدی.

mosi2007
دوشنبه 08 خرداد 1391, 20:44 عصر
اگر قصدت از Refresh صفحه writexml.php در زمان فراخوانی صفحه index اینه که کدش قبل از بارگزاری صفحه index انجام بشه ! میتونی با curl اون را از صفحه index فراخونی کنی !


قصدم همینه میخوام هر وقت صفحه index فراخوانی یا لود یا رفرش شد یا هر چیزه دیگه ای که شما اسمشو میذارید میخوام که صفحه writexml.php هم باهاش رفرش بشه
ممنون میشم با مثال بهم جواب بدید

Unique
سه شنبه 09 خرداد 1391, 02:44 صبح
صفحه writexml.php چیکار میکنه ؟ چرا فرآیندی که انجام میده را توی خود index.php نمیگذارید ؟ یا require کنید ؟

mosi2007
سه شنبه 09 خرداد 1391, 03:01 صبح
صفحه writexml.php چیکار میکنه ؟ چرا فرآیندی که انجام میده را توی خود index.php نمیگذارید ؟ یا require کنید ؟
چون خیلی سنگین میشه صفحه اول

یعنی اصلا راه حلی نیست که یک صفحه با رفرش شدنش صفحه ای دیگه ای رو هم رفرش کنه ؟؟؟

plague
سه شنبه 09 خرداد 1391, 03:39 صبح
راه حلش استفاده از سرویس هایی مانند پوش یا کامت هستش که منابع میخاد
یه راه دیگه هم هست انکه وقتی انیدکس رفرش یه فلگ یا علامتی داده بهش مثل تویه فایل تکست یا دیتابیس ثبت بشه با زمان رفرش شدن
اونوقت تو فایل دوم هر چند ثانیه یکبار اون دیتابیس چک بشه با ایجکس اگه آپدیت شده بود اینجا رفرش بشه

در کل کاره راحت و احتمالا صحیحی نیست باید ببینی نیازت چیه یه راه بهتر براش پیدا کنی

mosi2007
سه شنبه 09 خرداد 1391, 16:38 عصر
یعنی تو این دنیا کسی نیست جواب درستی به ما بده :متفکر::عصبانی++:

Unique
سه شنبه 09 خرداد 1391, 20:47 عصر
کاری که شما میخوای انجام بدی غیر منطقیه ! هر کاری بکنی آخرش باید همون زمانی که نیاز داری writexml.php توی Index.php اجرا بشه و میگی سنگینه در زمان فراخونی اون حالا چه با ajax و چه با curl در انتهای کد index.php باید وقت صرف کنی ! اگه VPS باشه میشه با یک command فایل php را بدون نیاز به صبر کردن برای اتمامش فراخونی کرد ولی اگه به نتیجش توی index.php نیاز داشته باشی بازم جواب نمیگیری !

بهتره توضیح بدی اصلا چه نیازی هست این کار انجام بشه ؟ چون در عمل نیاز به همچین کاری نیست !

mosi2007
سه شنبه 09 خرداد 1391, 22:04 عصر
دوست عزیز توضیحش سخته

میتونم فایل writexml.php رو تویه صفحه ایندکس اینکلود کنم ولی صفحه نامرتب میشه از این کار با این که جواب هم میگیرم ولی بعدا هر کی بیاد به سورس صفحم یه نگاه کنه
میگه که چه برنامه نویس نا مرتبی و بی نظمی :لبخند:

خب مثله اینکه چاره ای نیست باید همین کارو انجام بدم
به هر حال ممنون

MMSHFE
چهارشنبه 10 خرداد 1391, 19:38 عصر
نه نیازی نیست. کافیه این کد رو بنویسید:

$dummy = file_get_contents('http://yoursite.url/writexml.php');
تا فایل اجرا بشه و خروجی اون توی dummy$ قرار بگیره. حالا اگه این متغیر رو echo نکنید چیزی توی صفحه به نمایش در نمیاد ولی فایل اجرا شده.
البته از cURL هم میشه استفاده کنید.
موفق باشید.

Unique
پنج شنبه 11 خرداد 1391, 00:57 صبح
با استفاده از file_get_contents بیشتر از اونی که کد را داخل فایل اصلی require کنن طول میکشه ، چون index.php باید صبر کنه تا نتیجه اون url برگردونده بشه ! برای تمیز کد نوشتن باید از Class ها و Require استفاده کنین نه اینکه بخوایم محتوای مربوط بهمدیگه را توی دو تا فایل بریزیم بعد از یکی دومی را صدا بزنیم !

mosi2007
پنج شنبه 11 خرداد 1391, 01:09 صبح
با استفاده از file_get_contents بیشتر از اونی که کد را داخل فایل اصلی require کنن طول میکشه ، چون index.php باید صبر کنه تا نتیجه اون url برگردونده بشه ! برای تمیز کد نوشتن باید از Class ها و Require استفاده کنین نه اینکه بخوایم محتوای مربوط بهمدیگه را توی دو تا فایل بریزیم بعد از یکی دومی را صدا بزنیم !

یعنی سرعت لود صفحه ایندکس میاد پایین ؟؟

حالا باید بین تمیز نوشتن (file_get_contents) با سرعت کم و سریع لود شدن با (require ) یکی رو انتخاب کنم

خیلی بده تا به حال همچین امکانی تو php نیومده که بوسیله یه صفحه , صفحه دیگه ای رو بتونیم رفرش کنیم

MMSHFE
پنج شنبه 11 خرداد 1391, 01:20 صبح
دوست عزیز، این چیزی که شما میخواین اصلاً اسمش Refreshکردن نیست. منظور از Refresh اینه که شما صفحه ای رو (بصورت پنجره یا سربرگ) توی مرورگر باز کنید و بعد، اون رو دوباره از سرور درخواست کنید (حالا با F5 یا Ctrl+R یا Ctrl+F5 و... فرقی نمیکنه) که چنین کاری نه تنها توسط PHP بلکه توسط هیچ زبان سمت سروری قابل انجام نیست چون درخواست Refresh باید ازطرف کلاینت صادر بشه. این کاری که شما میخواین در اصل اجرای یک اسکریپت همزمان با بارگذاری یک اسکریپت دیگه هست که اگه اسکریپت مربوطه چیزی رو چاپ نمیکنه، میتونید اون رو require کنید ولی اگه دارای خروجی هست، تنها راه ممکن اجرای اون در پشت صحنه هست که این هم راههای خاص خودش رو داره مثل file_get_contents (ساده ولی کمی کند که از اونجا که فایل مذکور روی هاست خودتون هست، سرعت آنچنان کاهش پیدا نمیکنه - شاید در حد چند میلی ثانیه). راه دیگه، استفاده از cURL هست که کمی سرعتش بیشتره ولی دردسر بیشتری هم داره. مثلاً قبلش باید Output Buffer رو فعال کنید تا خروجی به نمایش در نیاد و بعدش هم بافر رو خالی کرده و ببندید. یک راه دیگه هم استفاده از AJAX هست که اصلاً سرعت بارگذاری صفحه شما رو کاهش نمیده چون صفحه اصلاً منتظر بارگذاری اون اسکریپت نمیشه ولی این هم یک ایراد عمده داره و اون هم اینکه ممکنه JS کلاً غیرفعال بشه و درنتیجه AJAX از کار بیفته. حالا با توجه به نیازتون و مزایا و معایب هر روش، باید راه حل مناسب رو برای نیاز خودتون انتخاب کنید.
-----
پی نوشت: لطفاً قبل از انتساب یک ایراد به PHP بررسی کنید ببینید اصلاً مشکل مربوطه، ارتباطی با PHP داره یا نه (این کار رو در سایر موارد هم انجام بدین، مختص PHP نیست!).
موفق باشید.

mosi2007
پنج شنبه 11 خرداد 1391, 01:49 صبح
پی نوشت: لطفاً قبل از انتساب یک ایراد به PHP بررسی کنید ببینید اصلاً مشکل مربوطه، ارتباطی با PHP داره یا نه (این کار رو در سایر موارد هم انجام بدین، مختص PHP نیست!).
موفق باشید.

این پی نوشت منو شرمنده کرد حالا همه فکر میکنن که من کلا تو همه موارد اینطوریم