نکات برنامه‌نویسی

نکات برنامه‌نویسی و رایانه‌ای - امیرمسعود ایرانی

نکات برنامه‌نویسی

نکات برنامه‌نویسی و رایانه‌ای - امیرمسعود ایرانی

۸ مطلب با موضوع «php» ثبت شده است

max_execution_time در php چیست ؟

امیرمسعود ایرانی | چهارشنبه, ۲۱ آذر ۱۳۹۷، ۰۸:۱۳ ق.ظ | ۰ نظر

کدهای برنامه‌نویسی که در زبان php یا هر زبان دیگر می‌نویسید برای اجرا به مقداری زمان نیاز دارند. زمان مورد نیاز برای اجرای این کدها معمولا بسیار اندک هستند و به نظر می‌رسد که فوری به پایان می‌رسند. ولی شرایطی نیز وجود دارد که اجرای برخی برنامه‌ها به زمان‌های بیشتری نیاز دارد برای مثال:

  1. هنگامی که برنامه‌ی شما در حال پردازش‌های سنگین روی پایگاه داده با حجم زیاد است
  2. هنگامی که در حال فشرده‌سازی فایل‌ها یا استخراج آن‌ها یا نصب یک بسته روی هاست هستید
  3. هنگامی که در حال دانلود یک فایل از اینترنت هستید
  4. هنگامی که در حال ارتباط با یک وب سرویس بانکی هستید و می‌خواهید تراکنشی انجام دهید
در موارد بالا و بسیاری موارد دیگر، ممکن است اجرای کدهای شما بیش از آن چیزی که در هاست مجاز تعیین شده است بشود و در نتیجه اجرای برنامه با محدودیت زمان متوقف شود.

مدت زمانی که به طور معمول هاست‌ها اجازه می‌دهند تا کدهای php اجرا شوند، ۳۰ ثانیه است و این مقدار با متغیر max_execution_time شناخته می‌شود.

برای تغییر این متغیر ممکن است تنظیماتی در پنل هاست موجود باشد یا لازم باشد درون فایل htaccess دستوراتی را بنویسید یا ممکن است لازم باشد فایلی با نام php.ini در هاست ایجاد کنید و دستورات مربوط را در آن درج کنید.

اینکه برای تغییر max_execution_time از چه روشی باید استفاده شود بستگی به تنظیمات انجام شده روی هاست و روش اجرای php دارد. اگر با استفاده از روش‌های متداول نتوانستید این مقدار را افزایش دهید، می‌بایست با پشتیبانی هاست تماس بگیرید و از آن‌ها بخواهید تا شما را راهنمایی کنند.

  • امیرمسعود ایرانی

رفع مشکل The page has expired due to inactivity در لاراول

امیرمسعود ایرانی | شنبه, ۳۰ تیر ۱۳۹۷، ۰۸:۰۲ ق.ظ | ۰ نظر

اگر سایت خود را با لاراول طراحی کرده باشید ممکن است هنگام مشاهده برخی صفحات با پیام «The page has expired due to inactivity» مواجه شوید.

این پیام به دلیل عدم وجود فیلد CSRF در صفحات POST یا سپری شدن مدت مجاز فیلد CSRF نمایش داده می‌شود.

اگر صفحه توسط فرم‌های موجود در سایت خودتان فراخوانی می‌شود، لازم است تا در هنگام ایجاد فرم فیلد CSRF را به صورت زیر در داخل آن قرار دهید:

@csrf

در صورتی که صفحه شما از بیرون سایت به صورت POST فراخوانی می‌شود. برای مثال هنگامی که از درگاه‌های بانکی استفاده می‌کنید و بانک پس از تکمیل فرآیند پرداخت کاربر را به سایتتان هدایت می‌کند، لازم است کنترل CSRF را روی این مسیر حذف نمایید.

چنانچه مسیر پرداخت شما نشانی شبیه آدرس زیر دارد:

http://example.com/pay/20/callback

برای استثنا شدن این مسیر، فایل «app/Http/Middleware/VerifyCsrfToken.php» را باز کنید و متغیر «except» را به شکل زیر ویرایش نمایید:

protected $except = [
    'pay/*'
];
  • امیرمسعود ایرانی

روش حذف پسوند php با استفاده از htaccess

امیرمسعود ایرانی | شنبه, ۱۵ شهریور ۱۳۹۳، ۱۲:۵۳ ب.ظ | ۰ نظر
ممکن است بخواهید کاری کنید تا کاربران سایت شما،‌ بدون تایپ اسم فایل به همراه پسوند php بتوانند از سایت شما استفاده کنند.
حذف پسوند php می‌تواند با هدف بهتر شدن ظاهر لینک‌های سایت یا با اهداف سئو به انجام برسد.
برای انجام این کار داخل فایل htaccess خود دستورات زیر را بنویسید
این دستورات با تغییراتی جزئی قابل استفاده برای پسوندهای html یا htm و سایر پسوندها نیز هستند:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
  • امیرمسعود ایرانی

معرفی Trait در PHP

امیرمسعود ایرانی | شنبه, ۸ شهریور ۱۳۹۳، ۰۱:۲۶ ب.ظ | ۰ نظر

Trait مفهومی جدید در PHP نگارش 5.4 و جدیدتر است. این مفهوم برای جایگزینی ارث بری چندگانه که در php موجود نیست ایجاد شده است.

در زبان‌هایی که از ارث‌بری چندگانه پشتیبانی می‌شود، می‌توان هنگام تعریف یک کلاس جدید، یک یا چند کلاس را به عنوان والد معرفی کرد ولی در زبانی مانند PHP با ارث‌بری یگانه، ارث‌بری تنها از یک کلاس امکان پذیر است.


مفهوم Trait چیزی شبیه یک کلاس است با این تفاوت که نمی‌تواند نمونه‌سازی شود و تنها برای اضافه کردن قطعه کد به دیگر کلاس‌ها استفاده می‌شود.


یک Trait می‌تواند حاوی چندین تابع باشد. درج یک Trait در یک کلاس تمامی توابع آن را به کلاس خواهد افزود.

این کار از تکرار کد جلوگیری می‌کند و می‌تواند باعث افزایش کارایی نرم‌افزار و سرعت توسعه‌ی آن شود

  • امیرمسعود ایرانی

Eventهای مدل‌ها در لاراول

امیرمسعود ایرانی | دوشنبه, ۳ شهریور ۱۳۹۳، ۰۵:۰۵ ب.ظ | ۰ نظر

مدل‌های ایجاد شده در فریم‌ورک لاراول امکان فراخوانی Event یا رویدادها را در خود دارند. به این معنی که می‌توانید پیش از رخداد برخی فعالیت‌ها مانند حذف، ایجاد یا ویرایش یک مدل، از آن آگاه شوید و پس از ارزیابی موارد دلخواه اجازه‌ی انجام یا عدم انجام فعالیت مورد نظر را صادر کنید.


در حال حاضر رویدادهای پشتیبانی شده در لاراول فهرست زیر هستند:

creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored


برای مشاهده‌ی مستندات کامل رویدادهای مدل اینجا کلیک کنید

  • امیرمسعود ایرانی

Composer چیست؟

امیرمسعود ایرانی | شنبه, ۲۵ مرداد ۱۳۹۳، ۰۲:۲۵ ب.ظ | ۰ نظر
Composer ابزاری است که نیازمندی‌های یک پروژه‌ی php را مدیریت می‌کند.
بررسی به‌روزبودن، تمامی کتابخانه‌های مورد نیاز برای یک پروژه و به‌روزرسانی آن‌ها ممکن است کاری دشوار و زمان‌بر باشد. با استفاده از Composer این کار به سادگی انجام می‌شود.

شیوه‌ی کار Composer به این صورت است که فهرست کتابخانه‌های مورد نیاز برای اجرای یک پروژه در فایلی به نام composer.json قرار گرفته در کنار فایل‌های اصلی پروژه ثبت می‌شوند
پس از دریافت و نصب Composer با فراخوانی دستور composer update در خط فرمان، این فایل خوانده می‌شود و تمام کتابخانه‌های ثبت شده در آن به شاخه‌ی vendor در کنار فایل اصلی منتقل می‌شوند.

نگارش جدید Composer که در ویندوز اجرا می‌شود، حاوی نرم‌افزاری است که اجرای دستور install را از داخل Windows Explorer و با قابلیت‌های Shell به انجام می‌رساند. برای استفاده از این ویژگی کافی است روی فایل composer.json کلیک راست کرده و گزینه‌ی install یا update را انتخاب کنیم.

برای به‌روزرسانی کتابخانه‌های مورد نظر، فراخوانی همین دستور کار به‌روزرسانی را انجام خواهد داد.

علاوه بر دو فایل composer.json و شاخه‌ی vendor یک فایل دیگر به نام composer.lock هم در کنار آن‌ها ساخته می‌شود. این فایل فهرست کتابخانه‌های دریافت شده و نصب شده را در خود نگهداری می‌کند.
مورد استفاده‌ی آن در هنگام کار گروهی است. با کمک این فهرست، هر یکی از اعضای تیم که دستور composer install را فراخوانی کنند، دقیقا نگارش‌های یکسانی از کتابخانه‌ها را دریافت خواهند کرد. و با این کار از ناهماهنگی‌های احتمالی در نگارش‌های مختلف کتابخانه‌ها پیش‌گیری خواهد شد

مدیر پروژه در زمان‌های مشخص، از دستور composer update و اعضای تیم از دستور composer install استفاده خواهند کرد.

برای استفاده از کتابخانه‌های دریافت شده، کافی است تا فایل vendor/autoload.php در پروژه include شود. مدیریت درج و فراخوانی کلاس‌های موجود در این کتابخانه‌ها از این پس توسط composer به انجام خواهد رسید

برای دریافت اطلاعات بیشتر در مورد Composer، دریافت آخرین نگارش و همچنین شیوه‌ی نوشتن فایل composer.json به نشانی زیر مراجعه کنید:
https://getcomposer.org
  • امیرمسعود ایرانی

افزایش سرعت composer در هنگام به‌روزرسانی نیازمندی‌ها

امیرمسعود ایرانی | چهارشنبه, ۲۲ مرداد ۱۳۹۳، ۰۲:۴۵ ب.ظ | ۱ نظر

بسیاری از پروژه‌های برنامه‌نویسی php و از آن جمله پروژه‌هایی که با فریم‌ورک لاراول و سیمفونی توسعه پیدا کرده‌اند، از نرم‌افزار مدیریت نیازمندی‌های composer استفاده می‌کنند.

یکی از مشکلاتی که معمولا در استفاده از composer خود را نشان می‌دهد، سرعت بسیار پایین عملکرد این نرم‌افزار است.

برای رفع این مشکل که به علت نصب بودن افزونه‌ی xdebug روی php به وجود می‌آید می‌توانید مراحل زیر را دنبال کنید

توجه: نصب بودن افزونه‌ی xdebug برای کاهش سرعت کافی است و غیرفعال کردن آن تاثیری در افزایش سرعت ندارد.


فایل php.ini را باز کنید و عبارت zend_extension را که در مقابل آن آدرس فایل php_xdebug-xxx قرار دارد را بیابید. این خط را با قرار دادن یکی نقطه‌ویرگول در ابتدای آن به صورت کامنت در بیاورید.


توجه: در محیط برنامه‌نویسی Wamp یا Xampp از یک فایل php.ini در مسیری غیر از محل نصب php استفاده می‌شود. و برای غیرفعال کردن xdebug در محیط command prompt ویندوز، می‌بایست فایل php.ini که در کنار فایل اجرایی php.exe واقع شده ویرایش شود.


این کار یک مزیت مهم دارد و آن اینکه بدون غیرفعال شدن xdebug در محیط برنامه‌نویسی، می‌توانید سرعت عملکرد composer را افزایش دهید.

  • امیرمسعود ایرانی

انتخاب بین اوپن‌کارت و پرستاشاپ

امیرمسعود ایرانی | چهارشنبه, ۱۴ اسفند ۱۳۹۲، ۰۴:۲۲ ب.ظ | ۱ نظر

- این یک مقایسه‌ی تجربی است نه علمی -


در طی مطالعات و جستجوها و بررسی‌هایی که انجام دادم، برای راه‌اندازی فروشگاه اینترنتی دو گزینه‌ی OpenCart و PrestaShop را پیدا کردم که از محبوبیت بیشتر و کاربران بسیاری برخوردار هستند. در ادامه تلاش می‌کنم، حس و تجربه‌ام را در مورد این دو سیستم یادداشت کنم.


امکانات

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


بانک افزونه‌ها

هر دو سیستم دارای تعدادی افزونه‌ی از پیش نصب شده و یک مخزن آنلاین برای افزونه‌های دیگر هستند. حجم افزونه‌های نصب شده روی پرستاشاپ بسیار بیشتر از اوپن‌کارت است. از طرف دیگر، نیاز اوپن‌کارت به افزونه‌ها بیشتر از پرستاشاپ است در حالی که این نیاز را به خوبی برطرف نمی‌کند.

افزونه‌های خوب و مهم موجود در سایت پرستاشاپ و اوپن‌کارت عمدتا تجاری هستند. قیمت افزونه‌های پرستاشاپ به طور تقریبی حدود ۷۰-۸۰ دلار است در حالی که افزونه‌های اوپن‌کارت به طور متوسط ۲۰ دلار قیمت دارند.

ظاهرا کنترل تیم توسعه روی افزونه‌های پرستاشاپ بسیار بهتر است. به همین دلیل، کیفیت و اطمینان به افزونه‌های پرستاشاپ بالاتر به نظر می‌رسد.


توسعه‌ی افزونه‌های جدید

در شکل توسعه‌ی افزونه‌های جدید، اوپن‌کارت یک فاجعه است. برای اضافه کردن یک افزونه‌ی جدید، باید چندین فایل را در شاخه‌های مختلف و پیش‌فرض اوپن‌کارت کپی کنید ! برای تغییر دادن کارایی‌های پیش‌فرض هم دو راه دارید. یا تغییر فایل‌های اصلی ! یا استفاده از افزونه‌ی VQMod که خود یک فاجعه‌ی دیگر است کمک بگیرید.

در طرف مقابل، پرستاشاپ، برای هر افزونه یک شاخه‌ی مجزا اختصاص می‌دهد و با استفاده از Hookهای آن می‌توانید، عملکردهای هسته را تغییر دهید.

فکر می‌کنم عبارت «فاجعه» به خوبی وضعیت اوپن‌کارت را شرح ندهد، برای انتقال بهتر حس موجود از عبارت «هرکی‌هرکی» هم می‌شود استفاده کرد :)


بهینه‌سازی موتور جستجو( SEO )

هر دو سیستم امکاناتی برای SEO در اختیار صاحب فروشگاه قرار می‌دهند. امکانات و کارایی پرستاشاپ در SEO بهتر از اوپن‌کارت است.


کارایی

با توجه به کیفیت کدنویسی، به نظر می‌رسد اوپن‌کارت در حجم بالای تراکنش‌ها آسیب‌پذیر باشد.


سیستم قالب‌نویسی

شکل توسعه‌ی قالب در هر دو محصول شباهت‌های زیادی به یکدیگر دارد. جز اینکه در پرستاشاپ از Smarty برای توسعه‌ی قالب کمک گرفته می‌شود. این ویژگی می‌تواند سرعت کدنویسی و قابلیت توسعه‌پذیری قالب‌ها را افزایش دهد.


بخش مدیریت

ساختار و شیوه‌ی کدنویسی در پرستاشاپ بهتر و بهینه‌تر است و از این جهت هم اوپن‌کارت نمره‌ی خوبی دریافت نمی‌کند.


مستندات

در مورد کیفیت مستندات، پرستاشاپ باز هم گوی سبقت را از اوپن کارت می‌رباید.


یکپارچه‌سازی

هر دو سیستم دارای افزونه‌هایی تجاری و رایگان برای یکپارچه‌سازی با سیستم‌های دیگر مثل وردپرس و جوملا هستند. در این زمینه هم پرستاشاپ سازگاری بهتری با سیستم‌های دیگر دارد.


-------------------------------


نتیجه‌گیری

اگر به یک فروشگاه معمولی بدون امکانات خاص و با تعداد محصولات محدود فکر می‌کنید، اوپن‌کارت گزینه‌ی قابل قبولی است.

ولی اگر به امکانات خاص نیازمند هستید و می‌خواهید یک فروشگاه به معنی واقعی در اختیار داشته باشید، پرستاشاپ گزینه‌ی نهایی شماست.

  • امیرمسعود ایرانی