- سایر استریمهای ویژه
4- expect://
این استریم توسط افزونه PECL Expect فراهم میشود و به شما امکان تعامل با فرآیندهای شبهتعاملی (مانند شبیهسازی رفتار ابزار expect در لینوکس) را میدهد.
با expect:// میتوانید یک دستور سیستمعامل را اجرا کنید که منتظر ورودی کاربر است و سپس به صورت برنامهنویسی با آن تعامل کنید (ارسال ورودیها و خواندن خروجیها)، گویی که یک کاربر پشت ترمینال نشسته است.
مثلاً فرض کنید میخواهید از داخل PHP یک اسکریپت Python را اجرا کنید که در حین اجرا چند سوال yes/no از کاربر میپرسد. با expect:// میتوانید PHP را طوری برنامهنویسی کنید که به آن سوالات پاسخ بفرستد و خروجی را دریافت کند.
این یک مورد پیشرفته است و بیشتر در محیطهای خاص DevOps یا تست خودکار ابزارهای خط فرمان استفاده میشود.
$fp = fopen("expect://ftp", "w+");
fwrite($fp, "open example.com\n");
fwrite($fp, "user myusername\n");
fwrite($fp, "pass mypassword\n");
while ($line = fgets($fp)) {
echo $line;
// ...
}
fclose($fp);در این مثال فرضی، ما برنامه ftp را با استریم expect باز کردهایم. سپس چند فرمان را به آن ارسال کردیم (باز کردن اتصال، فرستادن نامکاربری و رمز). با fgets نیز خروجی برنامه ftp را خطبهخط میخوانیم و چاپ میکنیم.
طبیعتاً در یک اسکریپت expect واقعی، شما منطق اضافهتری مینویسید تا تشخیص دهید چه زمانی ftp منتظر ورودی است (مثلاً عبارت "Password:" در خروجی ظاهر شد تا سپس رمز را ارسال کنید).
افزونه expect این امکانات تطبیق الگو را فراهم میکند. این توانمندی بسیار قدرتمند است اما محدود به مواقع خاص و نیازمند نصب extension است.
———
تا این قسمت با تمامی استریم های پیشفرض PHP آشنا شده ایم.
در قسمت بعد به ساخت استریم ها اختصاصی و شخصی سازی شده خواهیم پرداخت.
#PHP #PHP_streams
@AmirhDeveloper
.