يقوم مكون فئة العملية بتنفيذ الأمر في proc_open.
أعيد كتابة هذه الحزمة وتقسيمها إلى حزمتين.
الرجاء استخدام هذه الفئة. بدلاً من استخدام هذه الحزم.
هذه الحزمة مخصصة لاستخدامها كحزمة ملحن غير معقدة.
<?php
$ proc1 = new Process ( ' sh ' );
$ fd_out = $ proc1 -> setInput ( ' echo HelloWorld ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ([ ' grep ' , ' Hello ' ])
-> wait ();
$ ret = stream_get_contents ( $ fd_out );
→ اقرأ المزيد من العينات للاستخدام
composer require takuya/process
ستعيد العملية إدخال/إخراج مخزّن للقراءة/الكتابة
ستعود الطريقة إلى الدفق.
<?php
$ proc = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ fd_out = $ proc -> run ();
$ output = stream_get_contents ( $ fd_out );
// you can reuse, re-read output
fseek ( $ fd_out , 0 );
$ str = stream_get_contents ( $ fd_out );
<?php
$ proc = new Process ( ' sh sleep.sh ' );
$ proc -> start ();
echo ' started ' ;
$ proc -> join ();
يمكن لـ Process#pipe() توصيل برامج PIPE.
أنبوب توصيل ضمني stdout -> stdin
<?php
$ proc = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ fd_out = $ proc -> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> wait ();
بشكل صريح، قم بتوصيل (Proc1#)stdout -> (Proc2#)stdin
<?php
$ proc1 = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ proc2 = new Process ([ ' cat ' ]);
[ $ p1_out , $ p1_err ] = $ proc1 -> start ();
$ proc2 -> setInput ( $ p1_out );
$ proc2 -> start ();
$ proc2 -> wait ();
$ proc1 -> wait ();
ملاحظة: قم باستدعاء $proc2->wait()
أولاً، لتجنب القفل الطويل، لتشغيل عمليتين بالتوازي. السبب هو أن فئة Process
تعتمد IOBuffering ضمنيًا في wait
، لذا فإن calling wait()
يعني تشغيل حلقة التخزين المؤقت للتيار حتى نهاية العملية.
لا توجد حزم إضافية مطلوبة.
يجب استخدام ملف واحد src/Process.php
. فقط اكتب require_once هكذا.
<?php
require_once ' src/Process.php ' ;
تمت كتابة Process class
هذه بواسطة Vanilla php . لا توجد حزم اضافية. لا يوجد كمثرى أو ملحن أو أي حزم أخرى تحتاج إلى التثبيت.
باستخدام هذا بدون composer.phar
أو أي مدير حزم آخر، كل ما تحتاجه هو كتابة require_once.
مزيد من الاستخدام، اقرأ الملفات الموجودة في procjet /samples
و /tests/Features
و ./docs
.