استریم ها در PHP - قسمت هفتم
- سایر استریمهای ویژه
1- data://
این یک استریم رپر خاص است و به شما امکان میدهد دادههای خام را به شکل یک URL داخلی در خود اسکریپت جاگذاری کنید.
با آن میتوانید یک رشته داده (مثل متن یا حتی دادهٔ باینری به صورت Base64) را طوری استفاده کنید که گویی یک فایل است.
ساختار کلی آن به صورت
data://<mime>;base64,<encoded>
یا
data://<mime>,<urlencoded>
است.
موارد استفاده محدود ولی جالبی دارد؛ مثلاً برای تست و دمو میتوانید به جای ایجاد یک فایل فیزیکی، محتوای آن را با data URI در خود کد قرار دهید. یا میتوان از آن برای include کردن تکه کد PHP استفاده کرد.
به طور کلی، data:// زمانی به کار میآید که منبع داده شما از پیش در قالب یک رشته در دسترس است و میخواهید آن را مانند یک فایل رفتار دهید.
$quote = file_get_contents("data://text/plain;base64,SGVsbG8sIFdvcmxkIQ==");
در اینجا از data:// با MIME type برابر text/plain و دادههای Base64 استفاده کردهایم.
رشته Base64 دادهشده SGVsbG8sIFdvcmxkIQ== در واقع متن "Hello, World!" را نمایندگی میکند. با file_get_contents این منبع data URI را خواندیم و در خروجی چاپ کردیم؛ لذا نتیجه Hello, World! نمایش داده میشود.
همانطور که گفت شد، می توان یک کد PHP را به شکل Base64 تبدیل کرد، و آن را include کنیم.
include "data://text/plain;base64,PD9waHAgaGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW4nKTtlY2hvICdIZWxsbyBXb3JsZCc7Pz4=";
البته استفاده از data:// برای include مستلزم فعال بودن allow_url_include است و به لحاظ امنیتی همیشه توصیه نمیشود، اما وجود چنین امکانی بیانگر انعطاف بالای استریمها در PHP است.
———
2- ssh2.xxx://
این استریمها مربوط به دسترسی از طریق پروتکل Secure Shell (SSH2) هستند و در صورتی در دسترساند که اکستنشن SSH2 بر روی PHP نصب باشد.
با ssh2.sftp:// میتوان به سیستم فایل روی یک سرور از طریق SFTP دسترسی داشت،و با ssh2.scp:// امکان کپی فایل به/از سرور از طریق SCP فراهم است.
همچنین ssh2.shell:// و ssh2.exec:// و ssh2.tunnel:// برای مقاصد مختلفی مثل اجرای دستورات روی سرور راه دور، ایجاد تونل SSH و غیره وجود دارند.
اگر نیاز به تعامل با فایلها یا اجرای دستورات روی یک سرور دیگر از طریق SSH دارید، این استریمها کار را ساده میکنند. به عنوان مثال، برای خواندن یک فایل روی سرور B از اسکریپت PHP که روی سرور A اجرا میشود، میتوان از
ssh2.sftp://user:pass@host:22/path/to/file
استفاده کرد.
$fp = fopen("ssh2.sftp://user:password@remote-server.com:22/home/user/remote.txt", "r");
در این مثال فرضی، یک اتصال SFTP به سرور remote-server.com با نامکاربری و رمز دادهشده برقرار میشود و فایل remote.txt خوانده میشود.
استفاده از این رپرها به شما امکان میدهد بدون نیاز به ابزار خارجی یا کتابخانهٔ اضافه، مستقیماً از توابع استریم PHP (مانند fopen و غیره) برای تعامل با SSH/SFTP بهره ببرید.
طبیعتاً برای اینکه این کار عمل کند باید افزونه SSH2 نصب و فعال باشد و اعتبارنامههای ورود صحیح باشند. در غیر این صورت، PHP این آدرس را نخواهد شناخت.
———
3- ogg://
این استریم رپر برای کار با دادههای رسانهای فرمت Ogg طراحی شده است. Ogg یک قالب کانتینر چندرسانهای (معمولاً صوتی) است. پشتیبانی از ogg:// در PHP مستلزم نصب بودن کتابخانه/افزونهٔ مربوط به فرمت Ogg میباشد.
در عمل این مورد بسیار کمتر استفاده شده است، اما تصور کنید میخواهید جریان صوتی یک فایل OGG را پردازش یا پخش کنید. با ogg:// میتوانید مستقیماً محتوا را خوانده و احتمالاً با فیلترهای مناسب decode کنید. به طور خلاصه، این رپر برای خواندن دادهٔ خام از درون فایلهای .ogg (مثلاً استخراج جریانهای صوتی) به کار میرود و برای اکثر توسعهدهندگان PHP کاربرد روزمرهای ندارد مگر در پروژههای خاص مالتیمدیا.
استفاده از ogg:// به طور مستقیم شاید ساده نباشد زیرا نیاز به دانستن ساختار درونی Ogg و بهکارگیری فیلتر یا کتابخانه جهت تفسیر دادهها دارد. اما در سطح استریم، مثال کلی میتواند به شکل زیر باشد:
$fp = fopen("ogg://song.ogg", "r");
در اینجا $fp حاوی استریم رمزگذاریشده صوتی خواهد بود و برای تبدیل به صدای قابل پخش باید از توابع decode صوت (یا انتقال آن به پلیر مناسب) استفاده کرد.
در قسمت های بعدی با سایر استریمها در PHP آشنا خواهیم شد.
🔖 #PHP, #پی_اچ_پی
👤 AmirHossein
💎 Channel: @DevelopixPHP