পিএইচপি কমানোর কোন পয়েন্ট আছে?


101

আমি জানি আপনি পিএইচপি নিখুঁত করতে পারেন , তবে আমি ভাবছি যে কোনও পয়েন্ট আছে কিনা। পিএইচপি হ'ল ব্যাখ্যাযুক্ত ভাষা তাই সংকলিত ভাষার চেয়ে কিছুটা ধীরে চলবে। আমার প্রশ্ন হ'ল গ্রাহকরা কি পৃষ্ঠার লোডগুলিতে দৃশ্যমান গতির উন্নতি দেখতে পাবে এবং যদি আমি আমার পিএইচপি হ্রাস করতে পারি?

এছাড়াও, পিএইচপি বা অনুরূপ কিছু সংকলন করার কোনও উপায় আছে?


একটি সুস্পষ্ট বিষয় হ'ল আপনার কোডটি কম পোর্টেবল যা একটি বৈধ লক্ষ্য হতে পারে ob
জন

উত্তর:


161

পিএইচপি বাইটোকোডে সংকলিত হয়, তারপরে কোনও ভিএম এর অনুরূপ কোনও কিছুর উপরে ব্যাখ্যা করা হয়। অন্যান্য অনেক স্ক্রিপ্টিং ভাষা পার্ল এবং রুবি সহ একই সাধারণ প্রক্রিয়া অনুসরণ করে। এটি আসলে একটি aতিহ্যবাহী ব্যাখ্যার মতো ভাষা নয়, যেমন, বেসিক say

আপনি যদি উত্সটি "মাইনিফাই" করার চেষ্টা করেন তবে কার্যকর গতির কোনও বৃদ্ধি হবে না। আপনি এপিসির মতো বাইটকোড ক্যাশে ব্যবহার করে একটি বড় বৃদ্ধি পাবেন ।

ফেসবুক হিপহপ নামের একটি সংকলক চালু করেছে যা পিএইচপি উত্সকে সি ++ কোডে রূপান্তর করে। পিএইচপি-র অন্যতম বড় ছেলে রাসমাস লেয়ার্ডর্ফ এই বছরের গোড়ার দিকে ডিগের পক্ষে একটি উপস্থাপনা করেছিলেন যা হিপহপের দেওয়া পারফরম্যান্সের উন্নতিগুলি অন্তর্ভুক্ত করে। সংক্ষেপে, কোডটি অনুকূলিতকরণ এবং বাইকোড ক্যাশে ব্যবহার করার চেয়ে খুব বেশি দ্রুত নয়। হিপহপ বেশিরভাগ ব্যবহারকারীর জন্য ওভারকিল।

ফেসবুক সম্প্রতি এইচএইচভিএম-কে উন্মোচন করেছে , হিপহপ তৈরির কাজের ভিত্তিতে একটি নতুন ভার্চুয়াল মেশিন। এটি এখনও বরং নতুন এবং এটি সাধারণ জনগণের জন্য একটি বড় কার্যকারিতা উত্সাহ প্রদান করবে কিনা তা পরিষ্কার নয়।

এটি স্পষ্টভাবে বর্ণিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে সেই উপস্থাপনাটি পুরোপুরি পড়ুন। এটি ফেসবুক থেকে এক্সডিবেগ এবং এক্সএইচআরফের মতো সরঞ্জাম ব্যবহার করে বাধা বিপণন ও প্রোফাইল কোড এবং শনাক্তকরণের অসংখ্য উপায়গুলি চিহ্নিত করে ।


2
নোট করুন যে পুরো বাইটোকোড / ভিএম জিনিসটি আপনাকে বাহ্যিক (!) বাইটকোড ক্যাশে ছাড়া আসলে কিছুই কিনে না। পিএইচপি কেন ডিফল্টরূপে

আমি ধারণা করি এটি একটি ভাগ করা হোস্টিং ইস্যু। পুরানো .0.০-ভিত্তিক ট্রাঙ্ক হিসাবে এপিসি পিএইচপি-তে ডিফল্টরূপে অন্তর্ভুক্ত। আমি নিশ্চিত নই যে আমরা এটি 5.4 এ ডিফল্টরূপে দেখতে পাব বা নতুন ট্রাঙ্কটি যা ডাকা শেষ হবে ...
চার্লস

তথ্যের জন্য ধন্যবাদ অনেক। দুর্ভাগ্যক্রমে আমার সার্ভারের গভীর নিয়ন্ত্রণ নেই (এটি ভাড়া)। এটি সম্ভবত ওয়েব হোস্টগুলি এপিসি ব্যবহার করবে?
বোজাঙ্গলেস

3
বেশিরভাগ ভাগ করা হোস্টিং সরবরাহকারীরা এপিসি ব্যবহার করেন না। আপনার ভার্চুয়াল প্রাইভেট সার্ভারটি দেখতে হবে যাতে আপনি কনফিগারেশনটি নিয়ন্ত্রণ করতে পারেন। ভিপিএসগুলি প্রায়শই সাধারণ ভাগ করা হোস্টিংয়ের চেয়ে বেশি ব্যয়বহুল, তবে সত্যিকারের ডেডিকেটেড সার্ভারের চেয়ে অনেক কম ব্যয়বহুল। জনপ্রিয় ভিপিএস সরবরাহকারীদের মধ্যে স্লাইসহস্ট এবং লিনোড অন্তর্ভুক্ত রয়েছে। ভুলে যাবেন না যে আপনাকে প্রথমে আপনার কোডটি বেঞ্চমার্কিং এবং প্রোফাইলিং করা উচিত !
চার্লস

15

পিএইচপি হ্রাস করার ধারণাটি একটি অপকোড ক্যাশে ব্যবহার করার পক্ষে পছন্দ করুন PHP Accelerator, বা যেমন APC

বা অন্য কিছু memcached


18
আমি বললাম "অন্য কিছু।"
স্টিফেন

3
এটি অপ্পকোড ক্যাশে ব্যতীত অন্য কিছু বোঝাতে চাইলে তা পরিষ্কার নয়।
ট্রাফিননন

5
মেমক্যাচ করা পারফরম্যান্সের উন্নতির জন্য এক বিপর্যয়কর উপায় ... বেঞ্চমার্কিং এবং প্রোফাইলিংয়ের পরে এবং প্রতিষ্ঠা করার পরে যে ক্যাচিং নিজেই সেরা পারফরম্যান্স লাভ হবে।
চার্লস

1
আপনি যদি পিএইচপি 5.5 ব্যবহার করছেন তবে আপনাকে কোনও অপকোড ক্যাশে ইনস্টল করার দরকার নেই কারণ এটি ডিফল্টরূপে এটির সাথে আসে।
ফায়ারওয়াল

1
আমি প্রকৃতপক্ষে চটজলদি আপকে দেখলাম :( আমি অন্যদের সাথে একমত, এই প্রসঙ্গে ম্যাকচেড ব্যবহার করা বিভ্রান্তিকর। সংকলন প্রক্রিয়ার অংশ হিসাবে ডেটা ক্যাচ করা ফলাফল অপ্ট কোডের মতো নয়
মাইক পুরসেল

3

কিছু পুনর্লিখন (সংক্ষিপ্ত পরিবর্তনশীল নাম) দিয়ে আপনি কয়েক বাইট মেমরি সঞ্চয় করতে পারেন তবে এটি খুব কমই তাৎপর্যপূর্ণ।

তবে আমি আমার অ্যাপ্লিকেশনগুলির কয়েকটি এমনভাবে ডিজাইন করি যা স্ক্রিপ্টগুলি একসাথে অন্তর্ভুক্ত করতে দেয়। সঙ্গে php -wএটি উল্লেখযোগ্যভাবে সন্নিবিষ্ট করা যেতে পারে, স্ক্রিপ্ট প্রারম্ভে জন্য একটু গতি লাভ যোগ। একটি অপকোড-সক্ষম সার্ভারে এটি কেবলমাত্র কয়েকটি ফাইল এমটাইম চেকগুলি সংরক্ষণ করে।


3

এটি কোনও বিজ্ঞাপনের চেয়ে কম উত্তর। আমি এমন একটি পিএইচপি এক্সটেনশনে কাজ করছি যা স্থির টাইপিং সহ কোনও ভিএম-তে চালনার জন্য জেন্ড অপকডগুলিকে অনুবাদ করে। এটি নির্বিচার পিএইচপি কোডকে ত্বরান্বিত করে না। এটি আপনাকে নিয়মিত পিএইচপি যা দেয় তার চেয়ে দ্রুত গতিতে কোড লিখতে দেয়। এখানে কীটি স্থির টাইপিং। একটি আধুনিক সিপিইউতে, একটি গতিশীল ভাষা শাখার ভুল অনুমানের জরিমানা বাম এবং ডান খায়। পিএইচপি অ্যারেগুলি হ্যাশ টেবিলগুলি হ'ল উচ্চ ব্যয় আরোপ করে: প্রচুর শাখার ভুল ধারণা, ক্যাশের অকার্যকর ব্যবহার, মেমরির পূর্বনির্ধারিত ব্যবস্থা এবং কোনও সিমড অপ্টিমাইজেশন নেই। শাখার ভুল ধারণা এবং বিশেষত ক্যাশে মিস করা হ'ল আজকের প্রসেসরগুলির জন্য অ্যাকিলিসের হিল। আমার ছোট ভিএম হ্যাশ টেবিলের পরিবর্তে স্ট্যাটিক প্রকার এবং সি অ্যারে ব্যবহার করে সেই সমস্যাগুলিকে সরিয়ে দেয়। ফলাফলটি প্রায় দশগুণ দ্রুত চলতে শুরু করে। এটি বাইটকোড ব্যাখ্যাটি ব্যবহার করছে। এক্সটেনশনটি জিসিসির মাধ্যমে কোনও ফাংশন সংকলন করতে পারে। সেক্ষেত্রে আপনি দুই থেকে পাঁচগুণ বেশি গতি পাবেন।

আগ্রহী প্রত্যেকের জন্য লিঙ্কটি এখানে:

https://github.com/chung-leong/qb/wiki

আবার, এক্সটেনশনটি কোনও সাধারণ পিএইচপি এক্সিলার নয়। আপনাকে এর জন্য কোড নির্দিষ্ট লিখতে হবে।


2

হ্যাঁ একটি (প্রযুক্তিগত) বিন্দু আছে।

আপনার হোস্টার তার সার্ভারে আপনার কোড গুপ্তচর করতে পারে। আপনি যদি এটিকে ছোট করে ও কৃপণতা করেন তবে স্পাইদের পক্ষে আপনার ধারণা চুরি করা আরও কঠিন।

পিএইচপি ক্ষুদ্রাকরণ এবং uglifying করার একটি কারণ স্পাই-সুরক্ষা হতে পারে। আমি মনে করি কুরুচিপূর্ণ কোডটি একটি স্বয়ংক্রিয় স্থাপনার এক ধাপ উচিত।


1

পিএইচপি সংকলক রয়েছে ... তালিকার জন্য এই পূর্ববর্তী প্রশ্নটি দেখুন ; তবে (যদি না আপনি ফেসবুকের আকার বা ক্লায়েন্ট-সাইড চালানোর জন্য আপনার অ্যাপ্লিকেশনটিকে টার্গেট না করেন) তারা সাধারণত মূল্যবান হওয়ার চেয়ে অনেক বেশি সমস্যায় পড়ে

সাধারণ অপকোড ক্যাশে জড়িত প্রচেষ্টার জন্য আপনাকে আরও বেশি সুবিধা দেবে। বা বাধাগুলি সনাক্ত করতে আপনার কোডটি প্রোফাইল করুন এবং তারপরে এটি অনুকূলিতকরণ করুন।


1

আপনাকে পিএইচপি ক্ষুদ্রতর করার দরকার নেই। আরও ভাল পারফরম্যান্স পেতে, একটি ওপকোড ক্যাশে ইনস্টল করুন; তবে আদর্শ সমাধানটি হ'ল আপনার পিএইচপি 5.5 সংস্করণ বা তদুর্ধেরতে আপগ্রেড করা হবে কারণ নতুন সংস্করণগুলিতে জেন্ড অপটিমাইজার নামে একটি অপকোড ক্যাশে রয়েছে যা অন্যগুলির চেয়ে ভাল পারফর্ম করছে http://massivescale.blogspot.com/2013/06 / php-55-zend-optimiser-opcache-vs-xcache.html

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.