TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #394 275
استریم‌ ها در PHP - قسمت پنجم

- استریم‌های شبکه‌ای (HTTP و FTP)

1|2- http:// and https://

این استریم رپر برای دسترسی به منابع از طریق پروتکل HTTP (و HTTPS) به کار می‌رود. با استفاده از آن می‌توانید در PHP محتوای یک صفحه وب، API یا هر URL اینترنتی را مستقیماً بخوانید یا حتی داده‌ای را به آن ارسال کنید.

نکته: در حالت ارسال داده، معمولاً بهتر است از توابع مخصوص HTTP یا کتابخانه‌های وب استفاده شود، اما خواندن مستقیم رایج است.

متداول‌ترین کاربرد آن دریافت محتوای وب از داخل PHP است. برای مثال، خواندن خروجی یک API خارجی، واکشی محتوای یک صفحه وب جهت parse کردن، یا حتی دانلود یک فایل از اینترنت از طریق PHP.

$homepage = file_get_contents("http://www.example.com");
echo $homepage;

این کد با استفاده از file_get_contents محتوای خام HTML صفحه example.com را دریافت کرده و آن را echo می‌کند. در نتیجه HTML آن وب‌سایت (که شامل یک عنوان "Example Domain" و متن نمونه است) در خروجی ظاهر می‌شود.

همان‌طور که اشاره شد، https:// نیز پشتیبانی می‌شود و استفاده از آن مشابه http:// است.

———
3|4- ftp:// and ftps://

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

نسخهٔ امن FTP یعنی FTPS (FTP over SSL) نیز با پیشوند ftps:// در دسترس است، مشروط بر اینکه کتابخانه‌های لازم (مانند OpenSSL) فعال باشند.

کاربرد آن در دریافت یا ارسال فایل از/به یک سرور FTP از طریق PHP. برای مثال، اسکریپتی که هر شب یک فایل پشتیبان را از سرور دیگری دانلود می‌کند، یا سرویسی که یک فایل آپلودشده را روی FTP دیگری ذخیره می‌کند و... .

$data = file_get_contents("ftp://speedtest.tele2.net/1KB.zip");
file_put_contents("local_test.zip", $data);

در این مثال، به یک FTP عمومی متصل می‌شویم که یک فایل تست 1KB ارائه می‌دهد. با file_get_contents محتوای فایل باینری 1KB.zip را از طریق FTP دریافت کرده و سپس آن را با file_put_contents در یک فایل محلی (local_test.zip) ذخیره می‌کنیم.

در صورتی که FTP نیاز به احراز هویت داشت، باید در URL لحاظ شود، مثلاً:
ftp://username:password@ftp.example.com/pub/file.txt


برای نوشتن فایل در FTP نیز می‌توانید از fopen با مود w یا fwrite استفاده کنید، مشابه کار با فایل محلی، فقط باید دسترسی نوشتن روی سرور FTP داشته باشید.

- استریم‌های فشرده‌سازی و آرشیو

1|2- compress.zlib:// and compress.bzip2://

این رپر‌ها امکان فشرده‌سازی یا بازکردن داده‌ها را به صورت شفاف فراهم می‌کنند. compress.zlib:// در واقع برای کار با جریان‌های فشرده به فرمت gzip/zlib استفاده می‌شود و compress.bzip2:// برای فرمت BZip2.

شما با این استریم‌ها می‌توانید مستقیماً یک فایل فشرده (مثلاً یک فایل .gz یا .bz2) را باز کرده و محتوای غیرفشرده‌شدهٔ آن را بخوانید، یا بالعکس هنگام نوشتن، داده‌ها را به صورت فشرده ذخیره کنید.

خواندن فایل‌های متنی یا داده‌هایی که با gzip یا bzip2 فشرده شده‌اند بدون نیاز به اجرای دستی ابزارهای فشرده‌سازی. برای مثال، اسکریپتی که باید محتوای یک فایل لاگ فشرده‌شده را بخواند، می‌تواند مستقیماً آن را با compress.zlib:// باز کند. همچنین برای ساخت خروجی‌های فشرده (مثلاً ایجاد فایل CSV و ذخیره آن به صورت gzip) می‌توان در مسیر نوشتن از این رپر استفاده کرد.

توجه داشته باشید که استفاده از این استریم‌ها نیازمند فعال بودن کتابخانه‌های مربوطه در PHP است (zlib معمولاً به صورت پیش‌فرض وجود دارد، bzip2 نیز در بسیاری از توزیع‌ها فعال است).

$compressedFp = fopen("compress.zlib://logs_2025-04-03.txt.gz", "r");
$line = fgets($compressedFp);
echo $line;
fclose($compressedFp);

فرض کنیم فایلی به نام logs_2025-04-03.txt.gz داریم که با gzip فشرده شده است. در این مثال با fopen و پیشوند compress.zlib:// آن را باز می‌کنیم. سپس با fgets یک خط از محتوای غیرفشرده‌شده را می‌خوانیم و نمایش می‌دهیم. PHP به طور خودکار داده‌ها را از حالت فشرده خارج می‌کند، بنابراین نیازی نیست ابتدا فایل را دستی gunzip کنید.

استفاده از compress.bzip2:// نیز دقیقاً به همین شکل است، با این تفاوت که فشرده‌سازی با الگوریتم BZip2 انجام می‌شود و معمولاً برای فایل‌های .bz2 به کار می‌رود.

در قسمت های بعدی با سایر استریم‌ها در PHP آشنا خواهیم شد.

#PHP #PHP_streams
@AmirhDeveloper
.
  • ❤ 4
  • 🍓 1
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →