رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران
  • 0
عبدالرحمان آزادی

مشکل ذخیره شدن داده ها در فایل


سوال

درود بیکران به همه ی آیی او استریمی های عزیز ...

دوستان من یه کد دارم مال php. سه چها خطم بیشتر ...

<?php
            $f = fopen("a.txt", "w+");
            fwrite($f, time());
            fflush($f);
            fclose($f);
?>

این دیگه مشخصه چیکار میکنه ...

 

اما مشکل . وقتی من اینو اجرا میکنم و مقداری که باید تو فایل ذخیره میشه وقتی با یه برنامه ی دیگه میخوام مقدار این فایل رو بخونم : مقداری که قبلا توی فایل بوده به من برگردونده میشه .

البته : اگه من توی مرورگر مستقیم مقدار فایل رو بخونم و مقدار تغییر کنه اون وقت توی برنامه من مقدار جدید میاد .

جل الخالق .

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

14 پاسخ به این سوال تا کنون داده شده است

پست های پیشنهاد شده

  • 0
در 17 دقیقه قبل، عبدالرحمان آزادی گفته است :

اما مشکل . وقتی من اینو اجرا میکنم و مقداری که باید تو فایل ذخیره میشه وقتی با یه برنامه ی دیگه میخوام مقدار این فایل رو بخونم : مقداری که قبلا توی فایل بوده به من برگردونده میشه .

البته : اگه من توی مرورگر مستقیم مقدار فایل رو بخونم و مقدار تغییر کنه اون وقت توی برنامه من مقدار جدید میاد .

جل الخالق .

سلام،

کد شما مشکلی نداره، احتمالاً برنامه‌ای که ازش استفاده می‌کنید به صورت پیش‌فرض مقدار Cache-Control در هِدر رو فعال می‌کنه.

درستش این هست که شما در برنامه‌ی خودتون این مشخصه‌ رو تنظیم کنید. اما برای امتحان بد نیست سمت سرور این مشخه رو اعمال کنید. برای مثال:

<?php
header('Cache-Control: no-cache');
?>

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
ارسال شده در (ویرایش شده)
در 44 دقیقه قبل، کامبیز اسدزاده گفته است :

کد شما مشکلی نداره، احتمالاً برنامه‌ای که ازش استفاده می‌کنید به صورت پیش‌فرض مقدار Cache-Control در هِدر رو فعال می‌کنه. 

الان این باید رو کدوم ست بشه ؟؟؟

Cache-Control: max-age=<seconds>
Cache-Control: max-stale[=<seconds>]
Cache-Control: min-fresh=<seconds>
Cache-Control: no-cache 
Cache-Control: no-store
Cache-Control: no-transform
Cache-Control: only-if-cached

توی هدر http باید تنظیم بشه دیگه ؟؟؟

ویرایش شده در توسط عبدالرحمان آزادی

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 10 دقیقه قبل، عبدالرحمان آزادی گفته است :

توی هدر http باید تنظیم بشه دیگه ؟؟؟

پاسخ واضح بود!

در فایل php شما که خروجی رو برای دیگر برنامه‌ها تولید خواهد کرد.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 2 دقیقه قبل، کامبیز اسدزاده گفته است :

در فایل php شما که خروجی رو برای دیگر برنامه‌ها تولید خواهد کرد. 

وقتی درخواست میفرستم واسه یه اسکریپت php اینو جواب میده :

<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("b481aa4fb9852ca0e0cfb64301d9c93c");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://esp8266971.byethost12.com/a.txt?i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>

به خاطر همین من مستقیم دارم خود فایل رو میخونم ...

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 16 دقیقه قبل، عبدالرحمان آزادی گفته است :

وقتی درخواست میفرستم واسه یه اسکریپت php اینو جواب میده :


<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("b481aa4fb9852ca0e0cfb64301d9c93c");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://esp8266971.byethost12.com/a.txt?i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>

به خاطر همین من مستقیم دارم خود فایل رو میخونم ...

اولاً این پاسخی که داده مبنی بر این هست که باید یه چیزایی مثل JS رو مرورگر فعال باشه!

درضمن فایل رو به صورت مستقیم نباید بگیری! باید بخونیش 🙂 شما حتی نگفتی از چه روشی برای خوندن فایل استفاده می‌کنی تا بتونم بهتر راهنمایی کنیم. بهتره جزئیات کاری که داری می‌کنی رو ارائه بدی تا متوجه بشیم چیکار می‌کنی (مثلاً تو چه محیط و زبانی داری فایل رو میگیری؟).

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 3 دقیقه قبل، کامبیز اسدزاده گفته است :

اولاً این پاسخی که داده مبنی بر این هست که باید یه چیزایی مثل JS رو مرورگر فعال باشه! 

این اصلا مرورگر نیست ...

دارم esp8266  این فایل رو میخونم ... همین ...

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در در 25 آذر 1397 در 22:36، کامبیز اسدزاده گفته است :

اولاً این پاسخی که داده مبنی بر این هست که باید یه چیزایی مثل JS رو مرورگر فعال باشه!

آقای اسد زاده تو کیوت هم وقتی درخواستم رو میفستم به صفحه ی مورد نظر اینو جواب میگیرم :

<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("b481aa4fb9852ca0e0cfb64301d9c93c");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://esp8266971.byethost12.com/a.txt?i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>

خب این قسمت که توی مرورگر اوکی میشه ...

اما اگه درخواست من از سمت یه مرورگر نباشه چی ؟؟؟

مثلا با کیوت درخواست بدم ...

راهی نیست که اینو از سمت سرور غیر فعال کنم ؟؟؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 41 دقیقه قبل، عبدالرحمان آزادی گفته است :

آقای اسد زاده تو کیوت هم وقتی درخواستم رو میفستم به صفحه ی مورد نظر اینو جواب میگیرم :


<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("b481aa4fb9852ca0e0cfb64301d9c93c");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://esp8266971.byethost12.com/a.txt?i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>

خب این قسمت که توی مرورگر اوکی میشه ...

اما اگه درخواست من از سمت یه مرورگر نباشه چی ؟؟؟

مثلا با کیوت درخواست بدم ...

راهی نیست که اینو از سمت سرور غیر فعال کنم ؟؟؟

دوست عزیز شما لطف کن حداقل پیغامی که میده رو بخون بسیار واضحه!!!

This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در هم اکنون، کامبیز اسدزاده گفته است :

دوست عزیز شما لطف کن حداقل پیغامی که میده رو بخون بسیار واضحه!!!

خوندم . والا خوندم . بالله خوندم ...

بگین چجوری باید حلش کنم ... باید از سرور حل بشه از تو php حل بشه . ازکجا میاد این ؟؟؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 36 دقیقه قبل، عبدالرحمان آزادی گفته است :

خوندم . والا خوندم . بالله خوندم ...

بگین چجوری باید حلش کنم ... باید از سرور حل بشه از تو php حل بشه . ازکجا میاد این ؟؟؟

خوب دوست عزیز و گرامی،

شما نه کُدی گذاشتی اینجا، نه درست حسابی می‌گی داری چکار می‌کنی انتظار داری مشکل رو بفهمیم از کجاست؟!😐 من فقط خطایی که دادی رو ترجمه کردم برات و مشخصه پاسخیه که سرور به شما میده، پس بالای ۹۰٪ باید سمت سرور کد‌‌های شما بررسی بشه.

  • باید مشخص باشه آدرس url ای که درخواست می‌فرستی تحت چه پروتکلی هست
  • باید مشخص بشه نتایجی که برای ارسال می‌سازی تحت چه معماری داره تولید میشه؟ JSon، Xml یا GraphQL ؟ کدومش؟!
  • سمت کلاینت با چه روشی داری درخواست می‌فرستی و چطور پارسش می‌کنی؟

پیشنهاد من برای این کار‌ها این هستش که تحت Php یک قالب مشخصی رو بسازید تحت JSon تولیدش کنید. سمت کلاینت هم درخواست به آدرس بفرستین و نتیجه‌ی همون رو پارسش کنید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 45 دقیقه قبل، کامبیز اسدزاده گفته است :

شما نه کُدی گذاشتی اینجا، نه درست حسابی می‌گی داری چکار می‌کنی انتظار داری مشکل رو بفهمیم از کجاست؟!

این کدرو گذاشتم رو سرور :

<?php


            $f = fopen("a.txt", "w+");

            fwrite($f, time());

            fflush($f);

            fclose($f);

?>

اینکه مشخصه چیکار میکنه ؟؟؟ این صرفا فقط یه مقداری رو میریزه تو ین فایل تا بعدا بقیه ی کاراش اوکی بشه ...

 

حالا اون فایل a.txt  هست ؟؟؟ اونو من میخوام از بخونم ... مثلا تو کیوت با کلاس QNetworkAccessManager ...

خب من این مقدار رو که میخونم اینو جواب میده :

<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("b481aa4fb9852ca0e0cfb64301d9c93c");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://esp8266971.byethost12.com/a.txt?i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>

در بهترین حالت اینو جواب نمیده و همون مقدار قدیمی رو نشون میده (یعنی مقداری که ما میگریم آپدیت نیست.

وقتی آپدیت میشه که با مرورگر آدرس اون فایل رو بزنیم و مقدار رو توسط مرورگر بگیریم . بعدش واسه ما هم آپدیت میشه...

آدرس فایل:

http://esp8266971.byethost12.com/a.txt

آدرس پیج index.php:

http://esp8266971.byethost12.com/

 

 

حالا کار اصلی که من میخوام کنم اینه که با یه esp8266  محتوای این فایل رو بخونم ...

 

حالا از اون بدتر اینه که وقتی یه درخواست میفرستم سمت index.php و بخواد جواب همونو بهم بده  بازم اینو جواب میده :

<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("b481aa4fb9852ca0e0cfb64301d9c93c");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://esp8266971.byethost12.com/a.txt?i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>

 

یه جا خوندم که باید permission   اون فایل رو روی ۷۷۷ بزاریم ... من هم فایل php رو ۷۷۷ کردم هم a.txt . اما بازم داستان همونه ....

 

و اما داستان اون Cache-Control که گفتین ....

وقتی میخوام جواب درخواستی که دادم به php  بگیرم اینه :

Cache-Control: no-cache

 

اما واسه فایل a.txt وقتی مقدارش رو میگیرم اینو تو هدر میزنه :

Cache-Control: max-age=2592000, public, proxy-revalidate, public, public, proxy-revalidate, must-revalidate

 

 

دیگه از این کامل تر من چی بگم ؟؟؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 53 دقیقه قبل، عبدالرحمان آزادی گفته است :

این کدرو گذاشتم رو سرور :


<?php
 
            $f = fopen("a.txt", "w+");
 
            fwrite($f, time());
 
            fflush($f);
 
            fclose($f);
 
?>

اینکه مشخصه چیکار میکنه ؟؟؟ این صرفا فقط یه مقداری رو میریزه تو ین فایل تا بعدا بقیه ی کاراش اوکی بشه ...

اولاً یکم تحمل داشته باش و سعی کن با ملایمت در رسیدن به پاسخ مدارا کنی!!! اگه از اولش اطلاعات کافی داده بودی و یا طبق قوانین (سند نحوه‌ی پرسش و پاسخ هوشمندانه) درخواست کرده بودی اینهمه تایپ نمی‌کردیم! با بی صبری و بد‌خِلقی نمیشه به یک پاسخ مفید رسید! به هر حال من متوجه شدم شما دقیقاً نیازت چه چیزی هست و مشکل از کجاست.

مشکل مرتبط با سرور میزبانی شما هست (به خاطر محافظت از بات‌ها) این محدودیت وجود داره، چون هربار درخواست ارسال بشه فیلتر کنترل کننده ربات بر روی سرور شما وارد عمل خواهد شد. برای اینکه مطمئن بشم مشکل از این هست روی سرور خودم امتحانش کردم مشکل همینی هست که گفتم.

درستش این هست که نباید از این روش استفاده کنی‌ 🙂 یعنی نباید صرفاً برای مقدار گرفتن، کارِت رو سخت کنی و غیر حرفه‌ای عمل کنی و مقدار یک فایل رو تحت متد Get بگیری! فناوری Rest و مخصوصاً Restful برای حل همین مشکلات ارائه شده.

شما کد Php خودت رو به صورت زیر تغییر بده تا بتونی قالب JSon رو تولید کنی! بعدش هم باید جی‌سان رو سمت برنامه‌ی خودت که با ++C هست تجزیه کنی.

<?php

 header('Content-Type: application/json; charset=utf-8');
            
 $rowData[] = ['result' =>  time() ];
 $Object->data = $rowData;
 $regJson = json_encode($Object);
 
 echo $regJson;
   
?>

این کد رو امتحان کن اگر مشکل خاصی با جی‌سان یا کیوت داشتی در بخش مرتبط با خودش بپرس.

موفق باشی.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 4 ساعت قبل، کامبیز اسدزاده گفته است :
<?php

حل نشد ... مشکل از فرمت اطلاعات نیست ...

مشکل از ارساله که واسه من یه کد جاوا اسکریپت میفرسته تا اونو اجرا کنم ...

اگه میشد اینو اوکی کرد خوب میشد ...

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...