bookmark_borderیک بازنویسی دوباره، از PHP به Rust

یه پروژه PHP دارم، با Laravel نوشتم. یه بخشی از پروژه محاسبات عددی سبک ولی خیلی زیاد داشت. نسبتا سنگین شده بود و میتونست تا چند دقیقه طول بکشه.

تصمیم گرفتم اون تیکه رو با Rust بازنویسی کنم. با خوندن مستندات Rust شروع کردم و روز بعد شروع کردم به نوشتن.

Continue reading “یک بازنویسی دوباره، از PHP به Rust”

bookmark_borderآرگومان break و continue در php

این دو دستور تو php آرگومان میگیرن. مثلا میتونیم بنویسیم break 1 یا continue 2. چیکار میکنن؟ این تیکه کد رو ببینیم.

<?php
foreach (range(1,4) as $i) {
  foreach (range(1,4) as $j) {
    if ($i == 2) continue 2;
    if ($j == 3) continue;
    echo "$i -- $j" . PHP_EOL;
  }
}

خب خروجی چطور میشه؟ اینطور

1 -- 1
1 -- 2
1 -- 4
3 -- 1
3 -- 2
3 -- 4
4 -- 1
4 -- 2
4 -- 4

شرط $j == 3 یه شرط معمولیه، پس وقتی حلقه داخلی به سه میرسه چیزی چاپ نمیشه. شرط بالایی که $i == 2 هست، continue 2 رو اجرا میکنه. این عبارت یعنی نه تنها حلقه فعلی، که حلقه بعدی رو هم continue میکنه، یعنی حلقه $i.

یعنی آرگومان continue تعداد حلقه‌هایی که قراره پرش بشن رو تعیین میکنه.

همچنین continue بدون آرگومان یعنی همون continue 1 یعنی حلقه فعلی.

تمام این ها در مورد break و در مورد تمام انواع دیگه حلقه ها هم صدق میکنه. همچنین در مورد switch هم صدق میکنه، گرچه continue و break داخل switch حدودا یک معنی میدن.

bookmark_borderچطور یه کوئری ساده SQL کار نمیکنه!

تو یه بخشی از یه پروژه، سه تا جدول داشتم برای اخبار، تگ اخبار و ارتباط بینشون. میخواستم مثلا اخباری که تگ‌های اقتصادی داری رو در بیارم. اول یه همچین چیزی نوشتم.

Continue reading “چطور یه کوئری ساده SQL کار نمیکنه!”

bookmark_borderاستفاده از elixir به جای php در یک پروژه ساده

یه پروژه ساده داشتم، که یه صف از کارا رو باید انجام میدادم. از Lumen استفاده کردم، و یه چند تا worker رو با استفاده از supervisor اووردم بالا که کارا رو انجام بدن. یه endpoint هم داشت که یه سرویس دیگه ازش برای ایجاد کار جدید استفاده میکرد.

Continue reading “استفاده از elixir به جای php در یک پروژه ساده”

bookmark_borderمراقب guzzle باشید

کتابخونه guzzle یه http client هست. خیلی جاها استفاده شده و میشه.

یه نکته ای که من رو خیلی اذیت کرد باهتش این بود که تو مستنداتش گفته درخواست های همزمان رو پشتیبانی میکنه. اما همیشه نمیکنه.

برای اینکه واقعا درخواست همزمان بزنه، باید حتما curl رو نصب کرده باشین.

و دقت کنین اگه mod_php یا fpm یا cgi استفاده میکنین، معمولا php.ini هرکدوم فرق داره که باید جدا فعال کنین. موفق باشید 🙂

bookmark_borderخب php 7.4 هم منتشر شد

نسخه 7.4 هم منتشر شد. لیست تغییراتش رو دیدم، بد نیست.

شانس من، رو سیستم خودم arch دارم. یه پروژه symfony 4.3 هم دارم. عادت دارم اکثر پروژه‌هام رو هر از چند گاهی یه composer update میزنم که اپدیت بمونن.

نگو arch اومده php رو اپدیت کرده به 7.4 بعد composer هم از رو اون برداشته پکیج‌ها رو اپدیت کرده. بعد از دیپلوی دیدم سایت از کار افتاد.

اخرش سرور رو هم به 7.4 اپدیت کردم و حل شد.