How can you learn PHP easily in Bangla?
PHP
শেখার সহজ উপায় গুলি জেনে নিন-
পিএইচপি শেখার জন্য বাজারে
অনেক বই রয়েছে। পিএইচপি হাতেখড়ি নিতে বাংলা বই ই সেরা। তবে পিএইচপিতে প্রফেশনাল হতে
হলে ওয়েবসাইটের বিকল্প নেই। একটা ব্যাপার মনে রাখতে হবে। কম্পিউটারের যেকোন ভাষা শেখার
সাথে সাথে তা অনশিলন বাধ্যতা মূলক। শেখার সময় সহজ মনে হলেও তা অনুশিলন না করলে মনে
থাকবেনা বা আয়ত্তে আসবেনা্।
আমাদের টি টিউন থেকে আপনি
বাংলাতে সহজেই পিএইচপি শিখতে পারবেন। তবে যদি আপনার জানার পরিধি আরো বেশী হয় এবং আপনি
ইংরেজীতে খুব বেশি পারদর্শ হন তবে http://php.net এখান থেকে ম্যানুয়ালটি নামিয়ে নিন। এখানে
বেসিক, সাধারন বা এডভ্যান্সড সকল তথ্যাদিই পাবেন।
তাছাড়া যারা পিএইচপি নিয়মিত
অনুশীলন করছেন তারা পিএইচপির ম্যানুয়েল উইডজেটি নামিয়ে নিতে পারেন http://widget.opera.com/widget/5288/ আরো অনেক লিঙ্ক আছে আগে নিজেই শুরু করে
দিন পরে নিজেই খুজে নিতে পারবেন।
ইংরেজী শেখা বাধ্যতামূলক
তা না হলে কাঁচাই থেকে যাবেন যে কোন প্রোগ্রামিং এ

PHP
শেখার আরো 43 টি টিপস জেনে নিন-
1। কোন মেথডে যদি static
করা যায় তাহলে তাই করুন, কারন তাতে স্পীড 4 গুন বাড়বে।
2। echo কনস্ট্রাকটি
print এর চাইতে দ্রুততর। তবে print এর একটি রিটার্ন ব্যালু আছে, এবং এটি মাত্র একটি
প্যারামিটার নেয়।
3। কনক্যাট করার চেয়ে
echo এর একাধিক প্যারামিটার পদ্ধতি অর্থাৎ কমা ব্যবহার করে স্ট্রিং আর ভ্যারিয়েবেল
আলাদা করুন।
4। for লুপের maxvalue আগেই
নির্ধারন করুন, লুপের ভিতর সেটি করবেননা। অর্থাৎ ক্যালকুলেট করে লুপ চলাকালীন যাতে
প্রতিবার বের করতে না হয়।
5। আপনার ব্যবহৃত ভ্যারিয়েন্ট
গুলোকে আনসেট করে মেমোরি ফ্রি করুন, বিশেষ করে বড় আ্যরে নিয়ে যখন কাজ করবেন, সেগুলো
আনসেট করতে ভুলবেন না।
6। _get, _set,
_autoload এজাতীয় ম্যাজিক মেথডগুলো এড়িয়ে চলতে পারলে ভালো। তবে আজকাল ফ্রেমওয়ার্কগুলোতে
এগুলো ব্যবহার করা হয় অনেক বেশি পরিমানে।
7।require-once() ফাংশনটি
এক্সপেনসিভ, পারলে এটির ব্যবহার করবেন না।
8।যদি আপনার ফাইল সমূহের
ইনক্লুড পাথ জানা থাকে তবে আ্যবসোলিউট পাথ ব্যাবহার করুন। (প্রোগ্রাম এক্সিকিউশন অনেক
দ্রুততর হবে।
9।যদি আপনার স্ক্রিপ্টটি
ঠিক ঠিক কখন এক্সিকিশন শুরু করেছে জানতে চান, তাহলে $_SERVER[‘REQUEST_TIME’] ব্যবহার
করুন time() নয়।
10। যদি সম্ভব হয় তবে, strncasecmp, strpbrk এবং stripos প্রভৃতি ব্যবহার
করুন। regex এর বদলে , কারন রেগুলার এক্সপ্রেশন এর এক্সিকিউশন সন্থর।
11। str_replace ফাংশনটি
preg_replace এর চাইতেও দ্রুততর, কিন্তু strtr ফাংশনটি str_replace এর তুলনায়ও 4 গুন
দ্রুততর।
12। যদি কোন ফাংশন যেমন স্ট্রিং
রিপলেসমেন্ট ফাংশন এ্যরে এবং সিংঙ্গেল ক্যারেক্টার উভয়ই আরগুমেন্ট হিসাবে নেয়। আর আপনার
আরগুমেন্ট লিস্ট যদি খুব বড় না হয়, তাহলে হাতেই লিখে দিন কয়েকটি রিপলেসমেন্ট স্টেটমেন্ট(এক লাইনেই আ্যরেতে পুরো আরগুমেন্ট পাস
করার বদলে), যাতে একটি একটি করে ক্যারেক্টার পাস করবেন।
13। যেখানেই সম্ভব if, else if এর জঙ্গলের চেয়ে
switch-case ব্যবহার করুন। পিএইচপি 6 এ goto স্টেটমেন্টটিও ফিরে আসছে।
14। Error suppression অপারেটর
ব্যবহার করলে স্ক্রীপ্ট অনেক মন্থর চলবে। তাই যখন তখন এটি ব্যবহার
করবেন না। এমনকি ডিবাগিং ও করা কঠিন হয়ে যায়
এটি ব্যবহারে।
15।আ্যাপাচির
mod_deflate অন করে দিন।
16। ডাটাবেজ কানেকশন নিয়ে
কাজ করা হয়ে গেলেই তা ক্লোজ করে দিন।
17। $row[‘id’] এভাবে লিখলে
তা $row[‘id’] এর চেয়ে 7 গুন দ্রুততর হবে। কারন” দিয়ে আগেই বলে দেয়া হচ্ছে কি করতে হবে।
18। Error messages are
expensive টেস্টিং এর সময় এরর মেসেজ রাখুন, প্রোডাকশনে এরর বাদ।
19।for লুপের ভেতরে ফাংশন
ব্যবহারে এড়িয়ে চলবেন। যেমন: for ($x=0; $x< count(($array);$x) এখানে count() ফাংশনটি
বারবার কল হবে।
20। কোনো মেথডের লোকাল ভ্যারিয়েবলকে
ইনক্রিমেন্ট করা অপেক্ষাকৃত দ্রুততর। যা কিনা কোন ফাংশনের লোকাল ভ্যারিয়েবলকে কল করার
মতোই সমগতির।
21। গ্লোবাল ভ্যারিয়েবল এর
ইনক্রিমেন্ট একটি লোকাল ভ্যারিয়েবলের তুলনায় দ্বিগুন মন্থর।
22। কোন অবজেক্ট প্রোপার্টির
ইনক্রিমেন্ট (যেমন $this->prop++) লোকাল ভ্যারিয়েবল ইক্রিমেন্ট থেকেও 3 গুন মন্থর।
23।ইনিশিয়ালাইজ না করা কোনো
লোকাল ভ্যারিয়েবেলের ইনক্রিমেন্ট ইনিশিয়ালাইজ করাটি তুলনায় 9-10 গুন মন্থর হবে।
24। কোন গ্লোবাল ভ্যারিয়েবেল
ডিক্লোয়র করলেন কিন্তু তার ব্যবহার করেননি , তবুও এটা এক্সিকিউশনকে মন্থর করে দেবে(
মন্থরের পরিমান কোনো লোকাল ভ্যারিয়েবেলিকে ইনক্রিমেন্ট করানোর সমান). PHP খুব সম্ভব
এ সময় খুজে দেখে এই নামে কোনো গ্লোবাল ভ্যারিয়েবেল আছে কিনা আগেই।
25।মেথড ইনভোক করলে তা ক্লাসের
ভিতর কতগুলো মেথড রয়েছে তার উপর নির্ভরশীল নয়। পরীক্ষায় দেখা গেছে, একটি টেস্ট ক্লাসের
কোনো মেথডের পূর্বে বা পরে 10 টি এক্সট্রা মেথড যোগ করেও পারফর্মের্নেসের হেরফের পাওয়া
যায়নি। (এটি সরাসরি কোন কাজে লাগবে মনে হয়না)।
26।ডিরাইভড ক্লাসের মেথডগুলো
বেজ ক্লাসের মেথডগুলোর চেয়েও দ্রুত কাজ করে।
27। যদি এমন একটি ফাংশন কল
করা হয় যার একটি প্যারা মিটার আছে তবে ফাংশনের বডিতে কোন কোড নেই , তবে তাও কিন্তু
7/8 টি $localvar++ অপারেশনের সমান। আর তা যদি ফাংশন না হয়ে মেথড হয় তবে তা প্রায়
15 টি $localvar++ অপারেশনের সমান।
28। আপনার স্ট্রিং গুলোকে
’ দিয়ে কোটেড করুন “ দিয়ে নয়, এতে এক্সিকিউশন কিঞ্চিত হলেও দ্রুততর হবে। কারন পিএইচপি
“.......” এর ভেতরে ভ্যরিয়েবল খুজে বেড়ায়। কিন্তু ‘.......’ এর ভেতরে খোঁজেনা। অবশ্য
যদি ভ্যারিয়েবল রাখতে চান তবে “.......” এর ভেতরেই ব্যবহার করতে হবে।
29। স্ট্রীং ইকো করার সময়
ডট এরবদলে কমা দিয়ে সেগুলো পৃথক করলে তা দ্রুততর হবে। তবে মনে রাখবেন এটি ইকো’র বেলায়
খাটে কেননা কমা দিয়ে আসলে একাধিক প্যারামিটার নিচ্ছে সে।
30। কোন PHP স্ক্রীপ্ট কোন
HTML পেজের চেয়ে কম করেও 2 থেকে 10 গুন মন্থরতায় রান করবে আ্যপাচিতে । তাই HTML বেশি
ব্যবহার করে স্ক্রীপ্টের ব্যবহার সীমিত রাখুন। মানে মাথা ব্যাথা করলে মাথ কেট ফেলুন।
31।আপনার পিএইচপি কোড বারবাররিকম্পাইর
হবে যদি না তা ক্যাশিং করা থাকে। কোন ক্যাশিং সফটওয়ার কাজে লাগান আপানর সার্ভারে তা
25 থেকে 100% পর্য়ন্ত বেশি দ্রুততা নিশ্চিত করবে। বড় কোন সাইট করতে গেলে অবশ্যই এগুলি
খেয়াল করা দরকার।
32। যতো ক্যাশ করা যায় করুন।
memcached ব্যবহার করুন। মেমক্যাশড একটি হাই
পারফর্ম্যানস মেমোরি অবজেক্ট ক্যাসিং সিস্টেম। এটি ডাটবাবেজ লোড কমিয়ে ডাইনামিক ওয়েব
আ্যাপলিকেশনের কার্যকারিতা বৃদ্ধিতে সহায়ক। অপকোড ক্যাশ করাও জরুরী , তাহলে আপনার পিএইচপি
কোডকে বার বার কম্পাইল করতে হচ্ছে না।
33। যখন কোনো স্ট্রিং নিয়ে
কাজ করছেন তখন আপনি যদি এর লেংথ চেক করতে চান, নিশ্চয়ই প্রথমে মনে আসবে strlen() ফাংশনটির
কথা। ফাংশনটি বেশ দ্রুত কাজ করে কারন এটির অপারেশনে কোন ক্যালকুলেশন থাকেনা।বরং অলরেডি
জানা লেংথটিই রিটার্ন করে zval নামক স্ট্রাকচার থেকে (এটি অভ্যন্তরীণ সি স্ট্রাক্ট
যার মধ্যে পিএইচপির ভ্যারিয়েবেল গুলো থাকে।) তবে যেহেতু strlen() একটি ফাংশন তাই এটি
কিছুটা হলেও মন্থর , কারন এটি আরো কয়েকটি ফাংশন কলের উপর নির্ভরশীল যেমন lowercase
hf hashtable lookup ইত্যাদি। আপনি কিছু কিছু ক্ষেত্রে এটিকে অপটিমাইজ করে নিতে পারেন
isset() কনস্ট্রাক্ট ব্যবহার করে দেখুন:
EX. if
(strlen($foo)<5) {echo “Foo is too”;} vs. if (!isset($foo[5]00 {echo “Foo is too short”;} খুবই মজার ব্যাপার!
কনস্ট্রাক্ট হওয়াতে isset()
দ্রুত রান করে কারন এত ফাংশন লুকআপ তো নেই’ই লোয়ারকেস বা হ্যাশটেবলও দেখতে হচ্ছেনা।
এধরনের চালাকি ঠিকমতো কাজে লাগাতে পারলে বেশ মজা পাবেন নি:সন্দেহে।
34। ভ্যারিয়েবলের মান কমানো
বাড়ানোর সময় $i++ সবসময়ই ++$i থেকে মন্থরতর। এটা সম্পর্কে বলা হয়েছে এটা পুরোটাই
PHP নির্ভর তাই আপনার C বা java কোডেও এই বুদ্ধি কাজে লাগাতে গেলে তেমন ফায়দা
হবেনা। (আগে সিতে এই অপিটিমাইজেশনের কথা বলা হতো এখন কম্পাইলারেই অপটিমাইজড হবে হয়তো)
++$i এটি PHP তে দ্রুততর কারন $i++ এ 4টি অপকোড
ব্যবহৃত হয়েছে কিন্তু প্রি-ইনক্রিমেন্টে মাত্র 3টি । সবারই জানা আছে পোস্ট ইনক্রিমেন্ট
একটি টেম্পোরারি ভ্যারিয়েবেল তৈরি করে এরপর তা ইনক্রিমেন্ট করে। Zend এর পিএইচপি অপিমাইজারও
এ ধরনের অপকোড অপিমাইজ করে। তবুও এধরনের প্রাকটিস রাখা ভালো কেননা অনেক হোস্টিংয়েই
কিন্তু অপকোড অপিমাইজার ব্যবহার করা হয়না।
35। সবকিছুকেই OPP করতে হবে
এমন কথা নেই, অনেক বেশি ওভারহেড তৈরি করে এবং প্রতিটি মেথড এবং অবজেক্ট কল করা হলে
অনেক মেমোরি দখল হয়ে যায়।
36। সবধরনের ডাটা স্ট্রাকচারকেই
Class এ পরিনত করতে হবে এমন কোন বাধ্যবাধকতা নেই array ও কিন্তু অনেক কাজের।
37। মেথডকে অযথাই অনেকগুলো
স্ক্রিপ্ট করার দরকার নেই । আগেই ভেবে নিন ঠিক কোন কোডগুলো বারবার আপনার ব্যবহার করার
প্রয়োজন হবে।
38।যদি দেখন যে মেথডের কোন
বিশেষ অংশ আলাদা করা দরকার, রি-ফ্যক্টরিং এর সময় তা পরেও করতে পারবেন।
39। অসংখ্য প্রিডিফাইনড ফাংশন
আছে পিএইচপিতে সেগুলোর ব্যবহারে প্রাধন্য
দিন । অনেক সমই সেগুলোর ব্যবহারই অনেকেই জানেন না। এগুলো নিজের লেখা ফাংশনের চেয়ে দ্রুত
রান করার সম্ভাবনা রয়েছে।
40।এটা অ্যাডভান্সড লেভেলের
জন্য। আপনার কোন ফাংশন যদি অনেক সময় সাপেক্ষ এক্সিকিউট করে তবে তা C এক্সটেনশন
(PECL) হিসাবে তৈরি করে নিতে পারেন।
41। কোড প্রোফাইলিং করুন।
প্রোফাইলারের মাধ্যমে আপনি জানতে পারবেন কোন কোড বেশি রান হচ্ছে, কোন অংশ বেশি সময়
নিচ্ছে ইত্যাদি। সুতরাং সেইভাবে অপটিমাইজ করতে পারবেন। Xdebug এর একটি প্রোফাইলার আছে।
আরো নতুন নতুন কি বের হচ্ছে আমাদের ব্লগে খোঁজ রাখুন।
42। mod_gzip নামে একটি আ্যপাচি
মডিউল আছে। যা আপনার ডাটাকে অন দ্য ফ্লাই কম্প্রেস/সংকোচন করতে পারে এবং ডাটা ট্রানসফার
প্রায় 80% কমিয়ে দিতে সক্ষম।
43। এই ছোট আর্টিকেলটিও চোখ
বুলিয়ে নিতে পারেন John Lim এর পিএইচপি অপ্টিমাইজেশন
এর উপর লেখা।
No comments