কীভাবে পিএইচপি ওপিসি ব্যবহার করবেন?


249

পিএইচপি 5.5 প্রকাশিত হয়েছে এবং এটিতে একটি নতুন কোড ক্যাশিং মডিউল রয়েছে যা ওপচ্যাশ নামে পরিচিত, তবে এটির জন্য কোনও ডকুমেন্টেশন আছে বলে মনে হয় না।

সুতরাং এটির জন্য ডকুমেন্টেশন কোথায় এবং আমি কীভাবে ওপচী ব্যবহার করব?




খুব খারাপ যে ডকুমেন্টেশন আমাদেরকে কীভাবে সঠিকভাবে ওপচিকে সংকলন করতে / এটি অক্ষম করতে বা পিএইচপি 5.6.24+ উত্সের স্বতঃআরঙ্ককে কার্যক্ষম করতে বলে না, যাতে পিএইচপি সংকলন করে! :-(
ফিলিপ ওভারটোনসিংগার রাইডলো

@ ফ্রেড-আইআই- "এখানে অনেকগুলি সেটিংস রয়েছে যা সামঞ্জস্য করার প্রয়োজন হতে পারে it পিএইচপি 5.5 রিলিজ প্রক্রিয়াটির স্থায়িত্ব পর্বের সময় এটি কীভাবে কাজ করে এবং সমস্যাগুলি সনাক্ত করতে পারে তা ব্যাপকভাবে সহায়তা করবে" " ... ব্লগ পোস্টটি খুব সহায়ক নয়। এটা তোলে ব্যাখ্যা না বুঝতে কিভাবে এটি কাজ করে বা কিভাবে শ্রেষ্ঠ সেটিংস :( সমন্বয়
icc97

উত্তর:


371

স্থাপন

OpCache PHP5.5 + এ ডিফল্টরূপে সংকলিত হয়েছে। তবে এটি ডিফল্টরূপে অক্ষম। PHP5.5 + এ OpCache ব্যবহার শুরু করার জন্য আপনাকে প্রথমে এটি সক্ষম করতে হবে। এটি করার জন্য আপনাকে নিম্নলিখিতগুলি করতে হবে।

আপনার সাথে নিম্নলিখিত লাইনটি যুক্ত করুন php.ini:

zend_extension=/full/path/to/opcache.so (nix)
zend_extension=C:\path\to\php_opcache.dll (win)

মনে রাখবেন যে যখন পাথটিতে ফাঁকা স্থান রয়েছে তখন আপনার এটিকে উদ্ধৃতিতে আবদ্ধ করা উচিত:

zend_extension="C:\Program Files\PHP5.5\ext\php_opcache.dll"

এছাড়াও নোট করুন যে আপনাকে zend_extension"স্বাভাবিক" extensionনির্দেশের পরিবর্তে নির্দেশিকাটি ব্যবহার করতে হবে কারণ এটি আসল জেন্ড ইঞ্জিনকে (অর্থাৎ পিএইচপি চালায় এমন জিনিস) প্রভাবিত করে।

ব্যবহার

বর্তমানে চারটি ফাংশন রয়েছে যা আপনি ব্যবহার করতে পারেন:

opcache_get_configuration():

বর্তমানে ব্যবহৃত কনফিগারেশন OpCache ব্যবহার করে এমন একটি অ্যারে ফেরত দেয়। এতে সমস্ত আইআই সেটিংসের পাশাপাশি সংস্করণ তথ্য এবং কালো তালিকাভুক্ত ফাইল অন্তর্ভুক্ত রয়েছে।

var_dump(opcache_get_configuration());

opcache_get_status():

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

var_dump(opcache_get_status());

opcache_reset():

পুরো ক্যাশে পুনরায় সেট করুন। অর্থাত্ সম্ভাব্য সমস্ত ক্যাশেড স্ক্রিপ্টগুলি পরের দর্শনে আবার পার্স করা হবে।

opcache_reset();

opcache_invalidate():

একটি নির্দিষ্ট ক্যাশে স্ক্রিপ্ট অবৈধ। মানে স্ক্রিপ্টটি পরের দফায় আবার পার্স করা হবে।

opcache_invalidate('/path/to/script/to/invalidate.php', true);

রক্ষণাবেক্ষণ এবং প্রতিবেদন

অপসিচে রক্ষণাবেক্ষণ এবং দরকারী প্রতিবেদন তৈরিতে সহায়তা করার জন্য কিছু জিইউআই তৈরি করা হয়েছে। এই সরঞ্জামগুলি উপরের ফাংশনগুলি লাভ করে।

OpCacheGUI

দাবি অস্বীকার আমি এই প্রকল্পের লেখক

বৈশিষ্ট্য:

  • OpCache স্থিতি
  • OpCache কনফিগারেশন
  • OpCache পরিসংখ্যান
  • OpCache পুনরায় সেট করুন
  • স্ক্রিপ্টস পর্যালোচনা ক্যাশে হয়েছে
  • ক্যাশেড স্ক্রিপ্টগুলি অবৈধকরণ
  • বহুভাষিক
  • মোবাইল ডিভাইস সমর্থন
  • চকচকে গ্রাফ

স্ক্রীনশট:

অবস্থা

ক্যাশে-স্ক্রিপ্ট

গ্রাফ

mobilr

URL: https://github.com/PeeHaa/OpCacheGUI

opcache-স্থিতিটি

বৈশিষ্ট্য:

  • OpCache স্থিতি
  • OpCache কনফিগারেশন
  • OpCache পরিসংখ্যান
  • স্ক্রিপ্টস পর্যালোচনা ক্যাশে হয়েছে
  • ফাইল

স্ক্রীনশট:

অবস্থা

ইউআরএল: https://github.com/rlerdorf/opcache-status

opcache-GUI

বৈশিষ্ট্য:

  • OpCache স্থিতি
  • OpCache কনফিগারেশন
  • OpCache পরিসংখ্যান
  • OpCache পুনরায় সেট করুন
  • স্ক্রিপ্টস পর্যালোচনা ক্যাশে হয়েছে
  • ক্যাশেড স্ক্রিপ্টগুলি অবৈধকরণ
  • স্বয়ংক্রিয় রিফ্রেশ

স্ক্রীনশট:

opcache-GUI-ওভারভিউ

ইউআরএল: https://github.com/amnuts/opcache-gui


6
পিএইচপি-সিএলআই সম্পর্কে কিছু? সিএমআই কীভাবে এটি ব্যবহার করে? যখন এফপিএম পুনরায় চালু হয়, ওপিসি পুনরায় সেট করে - এটিও কি সি এল এলির ওপিসিচে প্রভাব ফেলে? সি এল এলির ওপচ ক্যাশ পৃথক বা এফপিএম এর সাথে একই ক্যাশে পুলটি ভাগ করে দেয়? ধন্যবাদ!
শাহরিয়ার ইমানভ

3
উবুন্টু ১৪.০৪, অ্যাপাচি ২.৪.,, পিএইচপি ৫..9.৯ এ আমার সর্বশেষতম ইনস্টলশনে আমার জন্য ওপচা ডিফল্টরূপে সক্ষম হয়েছিল।
jstats

হাই, আপনার ২ য় স্ক্রিনশটে, ক্যাশে_ফুলটি মিথ্যা, আমি এটি সম্পূর্ণ পৃষ্ঠার ক্যাশে সম্পর্কিত সম্পর্কিত ধরে নিচ্ছি, আপনি কীভাবে এটি চালু করবেন আমাকে বলতে পারেন? (এটি সত্য করুন)
ব্রুশেকুশিক

আমি ভুল, এটি সম্পূর্ণ পৃষ্ঠা ক্যাশে করার জন্য নয়, তবে ক্যাশে যে মেমরিটি ব্যবহার করে তা পূর্ণ হলে এটি সত্য হিসাবে দেখাবে। যাইহোক, ধন্যবাদ!
ব্রুশেকুশিক

zend_extension = C: \ path \ to \ php_opcache.dll (win) - php.ini এ এই লাইনটি যুক্ত করা ভাল কাজ করে।
কালিদাসন

152

ওপ্যাচে এপিসি প্রতিস্থাপন করেছে

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

তবে এর অর্থ হ'ল আপনি যদি বর্তমানে অন্যান্য ডেটা সঞ্চয় করার জন্য এপিসি ব্যবহার করছেন ( apc_store()ফাংশনের মাধ্যমে ) আপনি ওপিসিচ ব্যবহার করার সিদ্ধান্ত নিলে আপনি তা করতে সক্ষম হবেন না।

হয় আপনি যেমন অন্য গ্রন্থাগার যেমন ব্যবহার করতে হবে APCu বা Yac যা উভয় দোকান ভাগ পিএইচপি মেমরি কিছু ব্যবহার memcached মত মেমরি পিএইচপি করার জন্য একটি পৃথক প্রক্রিয়ায় ডেটা, বা সুইচ, যা সঞ্চয় তথ্য।

এছাড়াও, এপিসিতে আপলোড প্রগতি মিটারের সমপরিমান ওপ্যাচে নেই। পরিবর্তে আপনার সেশন আপলোড অগ্রগতি ব্যবহার করা উচিত ।

ওপচ্যাশের জন্য সেটিংস

ওপচে ক্যাশের ডকুমেন্টেশন এখানে তালিকাভুক্ত সমস্ত কনফিগারেশন বিকল্পের সাথে পাওয়া যাবে । প্রস্তাবিত সেটিংস হ'ল:

; Sets how much memory to use
opcache.memory_consumption=128

;Sets how much memory should be used by OPcache for storing internal strings 
;(e.g. classnames and the files they are contained in)
opcache.interned_strings_buffer=8

; The maximum number of files OPcache will cache
opcache.max_accelerated_files=4000

;How often (in seconds) to check file timestamps for changes to the shared
;memory storage allocation.
opcache.revalidate_freq=60

;If enabled, a fast shutdown sequence is used for the accelerated code
;The fast shutdown sequence doesn't free each allocated block, but lets
;the Zend Engine Memory Manager do the work.
opcache.fast_shutdown=1

;Enables the OPcache for the CLI version of PHP.
opcache.enable_cli=1

আপনি যদি এমন কোনও লাইব্রেরি বা কোড ব্যবহার করেন যা কোড টীকা ব্যবহার করে তবে আপনাকে অবশ্যই মন্তব্যগুলি সংরক্ষণ করতে সক্ষম করবেন:

opcache.save_comments=1

যদি অক্ষম থাকে, সমস্ত পিএইচপিডক মন্তব্যগুলি অনুকূলিত কোডের আকার হ্রাস করার জন্য কোড থেকে বাদ দেওয়া হয়। "ডক মন্তব্য" অক্ষম করা কিছু বিদ্যমান অ্যাপ্লিকেশন এবং ফ্রেমওয়ার্কগুলি ভেঙে ফেলতে পারে (উদাঃ মতবাদ, জেডএফ 2, পিএইচপিউনিট)


4
উত্পাদনের পরিবেশের জন্য, উন্নয়নের জন্য, বা উভয়ই সেই প্রস্তাবিত সেটিংসগুলি?
মার্চভ্যানেজেন্ড

1
ঠিক ওপচা কী এবং এর জন্য কী ব্যবহার করা হয় সে সম্পর্কে আমার পক্ষ থেকে একটি ভুল বোঝাবুঝি হতে পারে তবে নীচে নীচে PeeHaa স্থিতি স্ক্রিপ্টটি দিয়ে এটি কনফিগার করে পরীক্ষা করেছি। সব কাজ করছে। তবে আমি এখনও ওপি প্রশ্ন জিজ্ঞাসা করছি। "এটি কিভাবে ব্যবহার করতে?" এটি ক্যাচিং ভিউ এবং জিনিসগুলির জন্য নয়?
isimmons

3
@ আইসিমনস "ওপচা ভাগ করা মেমরিতে প্রম্পম্পাইল স্ক্রিপ্ট বাইটকোড সংরক্ষণ করে পিএইচপি এর কার্যকারিতা উন্নত করে, যার ফলে পিএইচপি-র প্রতিটি অনুরোধে স্ক্রিপ্টগুলি লোড করার এবং পার্স করার প্রয়োজনীয়তা সরিয়ে দেয়।"
ড্যানাক

1
@ মার্কাভেনজেন্ড ভাল পয়েন্ট! আমি মনে করি ক্যাশে উত্পাদন কেবল সত্যিকার অর্থে তৈরি করে তাই এই কনফিগারগুলি সম্ভবত উত্পাদন সেটিংস।
স্লিক

3
প্রস্তাবিত সেটিংসের কার্যকারিতা ডিফল্টের চেয়ে খারাপ কেন বা কখন তাদের কার্যকর করা শুরু করা উচিত তা কি কেউ ব্যাখ্যা করতে পারেন?
আরপি

19

আমি ওপচে যা ব্যবহার করি তার জন্য আমি আমার দুটি সেন্টে ফেলে যাচ্ছি।

আমি আমার ডাটাবেসে কথা বলতে সক্ষম হতে প্রচুর ক্ষেত্র এবং বৈধতা পদ্ধতি এবং এনামগুলি নিয়ে একটি বিস্তৃত কাঠামো তৈরি করেছি।

ওপচা ছাড়া

এই স্ক্রিপ্টটি ওপচা ছাড়াই ব্যবহার করার সময় এবং আমি অ্যাপাচি সার্ভারে 9000 অনুরোধগুলিকে 2.8 সেকেন্ডের মধ্যে ধাক্কা দিয়ে 70-80 সেকেন্ডের জন্য 90-100% সিপিইউতে সর্বাধিক আউট হয়ে যায় যতক্ষণ না এটি সমস্ত অনুরোধগুলি ধরে না যায়।

Total time taken: 76085 milliseconds(76 seconds)

ওপচা সক্ষম করা হয়েছে

ওপ্যাচে সক্ষম করার সাথে এটি প্রায় 25 সেকেন্ডের জন্য 25-30% সিপিইউ সময়ে চালিত হয় এবং 25% সিপিইউ ব্যবহারটি কখনই পাস করে না।

Total time taken: 26490 milliseconds(26 seconds)

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

এটি সার্ভার এমনকি ঘাম ভেঙে না দিয়ে আমি প্রতি সেকেন্ডে যে পরিমাণ ডেটা / অনুরোধগুলি পরিচালনা করতে পারি তা উল্লেখযোগ্যভাবে প্রসারিত করে।


3
zend_extension=php_opcache.dll; opcache.memory_consumption=128; opcache.interned_strings_buffer=8; opcache.max_accelerated_files=4000; opcache.revalidate_freq=60; opcache.fast_shutdown=1; opcache.enable_cli=1; opcache.blacklist_filename="C:\xampp\php\cfg\opcache.blacklist;শুধু প্রতিস্থাপন; ini ফাইল এন্ট্রি সহ। তবে এটি আমি ব্যবহার করি। বেশিরভাগ ডিফল্ট স্টাফ
স্যাচললাকা


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

2
এটা না। opcache.revalidate_freq=60;কতক্ষণ সেকেন্ডের মধ্যে কোনও ফাইল স্মৃতিতে বেঁচে থাকতে পারে তা নির্ধারণ করে। সময় শেষ হলে এটি ফাইলটি পুনরায় সংশোধন করে।
তিশাল্লাকা

3
প্রকৃতপক্ষে, opcache.revalidate_freqকোনও স্ক্রিপ্ট কতবার পরিবর্তনের জন্য পরীক্ষা করা হয় (তার টাইমস্ট্যাম্প পরিবর্তন হয়েছে কিনা তার উপর ভিত্তি করে) নিয়ন্ত্রণ করে। সুতরাং যদি কোনও স্ক্রিপ্টের টাইমস্ট্যাম্পটি শেষ বার সংকলিত হওয়ার সময় একই থাকে, তবে এটি পুনরায় সংকলিত হবে না। এগুলি সমস্তই ধরে নিচ্ছে যে আপনি opcache.validate_timestampsসেটিংস পরিবর্তন করেন নি, যা ডিফল্টরূপে সক্ষম করা হয়েছে।
jjlin

4

অ্যামাজন লিনাক্সে পিএইচপি 5.6 সহ (রেডহ্যাট বা সেন্টোসের ক্ষেত্রে একই হওয়া উচিত):

yum install php56-opcache

এবং তারপরে অ্যাপাচি পুনরায় চালু করুন।


2

মুডল সেট আপ করার সময় আমি এটির মুখোমুখি হয়েছি। আমি php.ini ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করেছি।

zend_extension=C:\xampp\php\ext\php_opcache.dll

[opcache]
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60

; Required for Moodle
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0

; If something does not work in Moodle
;opcache.revalidate_path = 1 ; May fix problems with include paths
;opcache.mmap_base = 0x20000000 ; (Windows only) fix OPcache crashes with event id 487

; Experimental for Moodle 2.6 and later
;opcache.fast_shutdown = 1
;opcache.enable_cli = 1 ; Speeds up CLI cron
;opcache.load_comments = 0 ; May lower memory use, might not be compatible with add-ons and other apps

extension=C:\xampp\php\ext\php_intl.dll

[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING

intl -> http://php.net/manual/en/book.intl.php


1
এই সেটিংসটি এখানে নথিভুক্ত রয়েছে তা লক্ষ করার মতো বিষয় হ'ল
en

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