یه پروژه PHP دارم، با Laravel نوشتم. یه بخشی از پروژه محاسبات عددی سبک ولی خیلی زیاد داشت. نسبتا سنگین شده بود و میتونست تا چند دقیقه طول بکشه.
تصمیم گرفتم اون تیکه رو با Rust بازنویسی کنم. با خوندن مستندات Rust شروع کردم و روز بعد شروع کردم به نوشتن.
نکته اینکه من تازه شروع کردم به یادگیری Rust و اصلا حرفهای نیستم.
با همین دانش ناقص، حدودا خط به خط PHP رو به Rust نوشتم و نتیجه عالی بود!
چندین برابر سریعتر اجرا میشه در حالی که هنوز Single Thread هست. محاسبات طوری هست که میشه به چند Thread واگذار بشه برای اجرا، و در تئوری باید سریعتر بشه. تا ببینم در عمل چطور میشه.
خب چطور داخل PHP استفاده کردم از این برنامه؟ خیلی ساده از shell_exec
استفاده کردم.
برنامه Rust اینجور نوشته شده که یه اسم فایل رو آرگومان میگیره و خروجی رو به صورت JSON مینویسه. داخل PHP اطلاعات ورودی رو داخل یه فایل (تابع tempnam
) مینویسه، اسم فایل رو میده به برنامه Rust و خروجی رو میخونه. ساده و تمام!
پروژه سنگین هست، ولی کاربراش چند نفر بیشتر نیستن. برای همین این مدل اجرا کفایت میکنه.