Apache2 আপ 4 কোরের ব্যবহার বুস্ট করুন, চলমান পিএইচপি


CLI প্রশ্নে আরও নীচে পড়ুন, CLI প্রশ্ন, যা শুধুমাত্র কথোপকথনে যোগ করা! ধন্যবাদ!


আমি একটি স্ক্রিপ্ট লিখেছি যা 160.1000 এন্ট্রির 48.1 মেগাবাইটের একটি xml ফাইল এবং 150.1000 টি এন্ট্রিগুলির 31.1 মেগাবাইটের একটি টেক্সট ফাইল সহ প্রক্রিয়া করে যা বহিরাগত ফাইলের জন্য কিছু ডিরেক্টরী অনুসন্ধান, ভারী ইন্টারলিঙ্কিং এবং পুনরাবৃত্ত চেক এবং ফলাফল ফর্ম্যাট করা এবং সব HTML ফাইল সংরক্ষণ

অবশ্যই, আমি প্রোগ্রাম দম্পতি বার পর্যালোচনা এবং সবচেয়ে দক্ষ কোড আমি মনে করতে পারে সঙ্গে শেষ পর্যন্ত। এটি একটি স্থানীয় প্রোগ্রাম এবং জেনারেটর নিয়মিত চালানোর প্রয়োজন হয় না। এক যুক্তি দিতে পারে যে আমি পিএইচপি ছাড়া অন্য একটি ভাষা ব্যবহার করা উচিত, কিন্তু simplexml পিএইচপি, ইত্যাদি শুধু আমার জন্য ভাল এবং এই উদ্দেশ্যে কাজ করে এছাড়াও একটি set_time_limit ('70000') আমাকে বিরক্ত না।

যদিও, এখানে আমার প্রশ্ন, আমার লিনাক্স সিস্টেমে apache2 করা সম্ভব কি, আমার পিএইচপি স্ক্রিপ্টটি চালানোর জন্য আমার 4 CPU কোরের ব্যবহার করা যায়? এমনকি যদি আমি প্রক্রিয়াকে বিভক্ত করি এবং একই সাথে একাধিক অনুরোধ করি, তবে CPU ব্যবহার এক সময়ে 1 CPU এর উপরে নাও যেতে পারে।

আমি এই বিষয়টি নিয়েছিলাম কিন্তু সমাধান খুঁজে পাইনি, তাই রাতে আমি এটা চালাইতে পারি, যদিও আমি এই জিনিসটিকে উত্সাহ দেওয়ার জন্য কিছু সাহায্যের প্রশংসা করব !!!

ADDED INFO - And here a picture of my processes: enter image description here

CLI: এক্সিকিউট করার জন্য লিনাক্স টার্মিনালে আমার index.php নাম্বার প্রয়োজন। কিন্তু আমি স্ক্রিপ্টে চারটি পোস্ট ভেরিয়েবল ($ _POST ['উদাহরণ']) পাঠাতে চাই। যে উপরে, আমি আমার ECHOS কিছু আউটপুট ফাইল উপস্থাপন করা হচ্ছে খুঁজছি। টার্মিনাল কমান্ড এবং পিএইচপি কমান্ডের সাথে দ্রুত যে কেউ এটিকে 4 টি পোস্ট ভেরিয়েবল ট্র্যাক করতে পারে:

if (PHP_SAPI === 'cli')
{
  //...
} 

? ... দুঃখিত কিন্তু এই আমার প্রথম php-cli মিথস্ক্রিয়া। ধন্যবাদ!

0
যোগ সম্পাদিত
মতামত: 1
সম্ভব না: ওহো! আপনার উত্তর জমা দেওয়া যাবে না কারণ: 100 টিরও বেশি খ্যাতি ব্যবহারকারীরা জিজ্ঞাসা করার পর 8 ঘন্টা তার নিজের প্রশ্নের উত্তর দিতে পারে না। আপনি 4 ঘন্টা উত্তর দিতে পারেন। তারপর পর্যন্ত মন্তব্য ব্যবহার করুন, বা পরিবর্তে আপনার প্রশ্ন সম্পাদনা করুন।
যোগ লেখক systrue, উৎস
set_time_limit (0) কিছু ইচ্ছামত উচ্চ সংখ্যক সেট এটি চেয়ে ভাল হবে।
যোগ লেখক ThiefMaster, উৎস
আপনি যদি একটি প্রশ্ন হিসাবে আপনার প্রশ্ন ছেড়ে এবং আপনি একটি উত্তর হিসাবে এটি সমাধান কিভাবে পোস্ট হবে, তাহলে প্রত্যেকের জন্য এটি অনেক পরিষ্কার হবে।
যোগ লেখক Zombaya, উৎস

4 উত্তর

SOLUTION, THX TO ThiefMaster and Zebediah49 recommending cli and my friend who supported me with the links: http://ch.php.net/manual/en/reserved.variables.argv.php/http://ch.php.net/manual/en/function.getopt.php

এবং এখানে আমি cli মাধ্যমে PHP কল কিভাবে:

//whenRunFromCLI
//callCLI
//php index.php './data/xyfullFile1.xml' './data/xxfullFile2.utf' 0 60000
//php index.php './data/xyfullFile1.xml' './data/xxfullFile2.utf' 60000 120000
//php index.php './data/xyfullFile1.xml' './data/xxfullFile2.utf' 120000 all
if (PHP_SAPI === 'cli'){
    $_POST['xml'] = $argv[1];
    $_POST['example'] = $argv[2];
    @$_POST['rangeFrom'] = $argv[3];
    @$_POST['rangeTo'] = $argv[4];
}

and the Result of calling the PHP file in three terminals: enter image description here

আমি জানি, আমি আমার ভার্চুয়াল মেশিনে কিছু আরো RAM দিতে হবে, ভাগ্যবান যে আমি এখনও 8GB অতিরিক্ত ;-)

চিয়ার্স এবং শান্তি!

0
যোগ

না, একক পিএইচপি স্ক্রিপ্ট কখনোই একাধিক থ্রেড ব্যবহার করবে না এবং এভাবে সবসময় একক কোর চলবে।

আপনি যে জিনিসগুলি একে অপরের উপর নির্ভর করেন তার উপর ভিত্তি করে আপনি যেকোনোভাবেই একাধিক থ্রেডে তাদের বিভাজন করতে পারবেন না।

0
যোগ
এটা একটি শট দিতে হবে ... আপনি ক্লি ব্যবহার সম্পর্কে ভাল সম্পদ আছে? আমি একটি সেটিং পর্দা থেকে কিছু ভেরিয়েবল পোস্ট করুন এবং php.net উপর cli বিবরণ দিকে তাকিয়ে পরে যে কি কিভাবে কোন সূত্র আছে। হয়তো আমি সাবধানে পড়া খুব লাজুক কিন্তু আপনি জানেন কিভাবে যে, যদি আমি একটি ভাল ম্যানুয়াল খুঁজে পেতে পারে, thx!
যোগ লেখক systrue, উৎস
আমি পিপি অন্য কোন পরিবেশে চালাব? xamp (জয় জন্য apache) এটি ইথার উন্নতি করবে না ...
যোগ লেখক systrue, উৎস
আমি চেষ্টা করেছি, কিন্তু এখনও আমার Apache শুধুমাত্র একটি সিপিই ব্যবহার করে এমনকি অনেক অনুরোধ আছে। হয়তো আমি আমার কনফিগারেশন উন্নত করতে পারি? আমি আমার Apache অন্য অনুরোধের চেয়ে 1 সিপিইউ ব্যবহার করে বোঝায়, কিন্তু এই নির্দিষ্ট php- ফাইল/প্রোগে না ...
যোগ লেখক systrue, উৎস
এটি একটি সমাধান নয় তবে একটি চমৎকার সমাধান। আমি আমার ভার্চুয়াল মেশিনটি ক্লোনের সাথে linux/apache2 ইনস্টল করতে একই পদ্ধতিতে চালানো যায় কিন্তু বিভিন্ন vm এর ফাইল/প্রক্রিয়ার বিভিন্ন অংশ, যা হোস্ট সিস্টেমকে প্রতিটি ভার্চুয়াল সিস্টেমের জন্য এক কোর প্রয়োগ করতে দেয়, এইভাবে আমি প্রক্রিয়াটি ভেঙ্গে যেতে পারি সময় চারপাশে দ্বারা সময়। আপনার পোস্টের জন্য ধন্যবাদ!
যোগ লেখক systrue, উৎস
হ্যাঁ, ঠিক উত্তর আমি প্রত্যাশিত, কিন্তু জিজ্ঞাসা মূল্য! ধন্যবাদ!
যোগ লেখক systrue, উৎস
কেন একাধিক পিএইচপি প্রক্রিয়া চালানো না ?! যে অনেক কম overkill হবে ...
যোগ লেখক ThiefMaster, উৎস
কেন আপনি এটির জন্য apache ব্যবহার করছেন?
যোগ লেখক ThiefMaster, উৎস
php-cli (কমান্ডলাইন) অবশ্যই।
যোগ লেখক ThiefMaster, উৎস

সম্পাদনা করুন: লেখক এর প্রতিক্রিয়া

এটি একটি সমাধান নয় তবে একটি চমৎকার সমাধান। আমি আমার ভার্চুয়াল মেশিনটি ক্লোনের সাথে linux/apache2 ইনস্টল করতে একই পদ্ধতিতে চালানো যায় কিন্তু বিভিন্ন vm এর ফাইল/প্রক্রিয়ার বিভিন্ন অংশ, যা হোস্ট সিস্টেমকে প্রতিটি ভার্চুয়াল সিস্টেমের জন্য এক কোর প্রয়োগ করতে দেয়, এইভাবে আমি প্রক্রিয়াটি ভেঙ্গে যেতে পারি সময় চারপাশে দ্বারা সময়। আপনার পোস্টের জন্য ধন্যবাদ!

===============

যদি এটি স্থানীয় হয়, এবং আপনি এখন এটি চালানোর জন্য চান, আপনি সম্ভবত এটি একটি cron কাজ থেকে এটি আহ্বান করা উচিত এই ভাবে, আপনি যা করছেন প্রতিটি কাজ জন্য একটি প্রক্রিয়া spawn করতে পারেন। যদি আপনি সত্যিই এটির জন্য পিএইচপি ব্যবহার করতে চান তবে আপনি পিএইচপি ব্যবহার করতে পারেন ক্রোন লাইন থেকে এটি করতে।

কোনটিই কম নয়, এটি এমন একটি শব্দ যা আপনি একটি স্বতন্ত্র একক-থ্রেডেড প্রক্রিয়া করছেন, এবং যদি আপনি এটি দ্রুত চান তবে এমন কিছু ব্যবহার করতে হবে যা PHP এর জন্য নয়।

0
যোগ
আপনি বলছি, আমি চেষ্টা করছি cli চেষ্টা যে এখনো ব্যবহার করা হয়নি এবং আমি স্ক্রিপ্ট কিছু পোস্ট ভেরিয়েবল হ্যান্ডেল প্রয়োজন, যা আমি সাধারণত ব্রাউজার সেট। আমি বলতে কমান্ড লাইন সহজ, শুধু যারা কমান্ড আমি কিছু ম্যানুয়াল পড়তে প্রয়োজন পোস্ট। হয়তো আপনি একটি ভাল সম্পদ পেয়েছেন?
যোগ লেখক systrue, উৎস
আমি তাদের উপর কল না কিন্তু ফায়ারফক্স বা অন্য কিছু ব্রাউজার আমি একাধিক অনুরোধের সাথে বাইরে থেকে Apache vm মধ্যে এটি পরীক্ষা। ঠিক নির্দিষ্ট লাইন শুরু করার জন্য লেখার ফাংশন সংজ্ঞা। তাই আমি 0-60000, দ্বিতীয় 60000-120000 এবং তৃতীয় 1২0000-এর শেষ করার জন্য একটি অনুরোধ করছি। এটা মনে হয় apache দ্বিতীয় এবং তৃতীয় অনুরোধ বন্ধ বন্ধ প্রথমবার জন্য অপেক্ষা।
যোগ লেখক systrue, উৎস
উপরে আমার পরিবর্তন প্রশ্ন দেখুন! CLI আমার জন্য কাজ করে !!! ধন্যবাদ
যোগ লেখক systrue, উৎস
ঠিক আমার সমস্যা, আমি যে করেছি এবং কিছু কারণে কারণে আমার ভিএম এখনও শুধুমাত্র একাধিক কলিং জন্য একটি সিপিইউ কোর ব্যবহার করে। আমার কোন ধারণা নেই, কেন?
যোগ লেখক systrue, উৎস
এটি একটি সমাধান নয় তবে একটি চমৎকার সমাধান। আমি আমার ভার্চুয়াল মেশিনটি ক্লোনের সাথে linux/apache2 ইনস্টল করতে একই পদ্ধতিতে চালানো যায় কিন্তু বিভিন্ন vm এর ফাইল/প্রক্রিয়ার বিভিন্ন অংশ, যা হোস্ট সিস্টেমকে প্রতিটি ভার্চুয়াল সিস্টেমের জন্য এক কোর প্রয়োগ করতে দেয়, এইভাবে আমি প্রক্রিয়াটি ভেঙ্গে যেতে পারি সময় চারপাশে দ্বারা সময়। আপনার পোস্টের জন্য ধন্যবাদ!
যোগ লেখক systrue, উৎস
অভিশপ্ত, আমার নিজের প্রশ্নের উত্তর দিতে যথেষ্ট খ্যাতি নেই, তাই এটি এখানে:
যোগ লেখক systrue, উৎস
হ্যাঁ, এই জন্য 100% ব্যবহারে এক CPU কোর সব সময়। এবং ডিরেক্টরি অনুসন্ধান একটি ছোটখাট কাজ হয়। যদিও, ধন্যবাদ ... আমি মনে করি স্মার্ট উপায় আছে কিন্তু আইও-আবদ্ধ সঙ্গে এটি স্পষ্ট মনে হয়। আমি এই জন্য একটি workaround পেয়েছিলাম ... আমার উত্তর পড়ুন!
যোগ লেখক systrue, উৎস
হ্যা, ক্রোন আমি আমার উপস্থিতি থেকে এসব জিনিসগুলি চালানোর জন্য ব্যবহার করছি। মনে হচ্ছে আমি একটি i7-2600 CPU কিন্তু একটি খারাপ গাধা দ্রুত uni CORE CPU এর সাথে কিছু প্রয়োজন নেই আপনার দ্রুত উত্তর দেওয়ার জন্য ধন্যবাদ!
যোগ লেখক systrue, উৎস
এটা কিছু অর্থে তোলে; এটি সম্ভবত কিছু অনুরোধ চেইনসই (সার্ভার ওভারলোড এর পরিবর্তে, প্রতিটি ক্লায়েন্ট এক সময়ে ফিরে এক অনুরোধ পায়) "সার্ভার" আপ বিভাজন মানে ফায়ারফক্স এটি বিভিন্ন সার্ভার মনে করে, এবং apache প্রক্রিয়া আসলে বিভিন্ন সার্ভার। আমি একা একা যদি আপনি cli থেকে parser আহ্বান যদি এটি একই জিনিস একাডেমিকভাবে আগ্রহী হবে।
যোগ লেখক zebediah49, উৎস
আহ, আমি (এবং আমি অন্যদের মনে করি) "আমি একটি ধীরে ধীরে স্ক্রিপ্ট আছে, যেখানে ঐন্দ্রজালিক multithread বোতাম?" প্রশ্ন ব্যাখ্যা। যে যদিও পুঙ্খানুপুঙ্খভাবে অদ্ভুত; আপনি কিভাবে তাদের কলিং হয়?
যোগ লেখক zebediah49, উৎস
যদি আপনি এটি বিভিন্ন VMs এর বিভিন্ন অংশে বিভক্ত করতে পারেন, তাহলে কেন আপনি একই ভিএমের বিভিন্ন অংশে বিভক্ত করতে পারেন না, প্রতিটি অংশে এটি একাধিকবার কল করুন?
যোগ লেখক zebediah49, উৎস
হেই, i7 নিজেই একক কোর-এ পরিণত হবে যদি মুহূর্তে এটিকে আরও ভাল করতে হয়: পি। যাইহোক, আপনি এটি ভঙ্গ করে এটি multithread করতে সক্ষম হতে পারে। উদাহরণস্বরূপ, এটি "ডিরেক্টরি বহিরাগত ফাইলগুলি অনুসন্ধান করে" শব্দটি খুঁজে/যেখানে /> /somewhere/listOfFiles.txt চালানোর সময় শুরুর সময় এগিয়ে এবং তারপর সূচী ফাইলটি অনুসন্ধান করে, অথবা এটির মতো কিছু। এটি সম্ভবত আপনার মত অন্য আইও- আপনি কি আসলেই এই প্রক্রিয়াকরণের একটি প্রক্রিয়াকরণ করছেন?
যোগ লেখক zebediah49, উৎস

হয়তো আপনি স্পর্ক ব্যবহার করতে পারেন! এটি একটি PHP lib এর সাহায্যে পিএইচপি প্রসেসকে একাধিক প্রসেসে রূপান্তর করতে দেয়।

<?php

use Spork\Deferred\DeferredFactory;
use Spork\ProcessManager;

$manager = new ProcessManager(new DeferredFactory());
$manager->fork(function() {
   //do something in another process!
})->then(function($output, $status) {
   //do something in the parent process when it's done!
});

https://github.com/kriswallsmith/spork

0
যোগ
ধন্যবাদ, পরের বার আমি এই চেষ্টা করবো, আমি ইতিমধ্যে প্রক্রিয়াটি বিভক্ত করেছি তাই এটি এখন আমার স্ক্রিপ্টে কিছু পরিবর্তন করবে না
যোগ লেখক systrue, উৎস
আমি এই লাইব্রেরি অস্তিত্ব দ্বারা প্রভাবিত বা ভয়ঙ্কর কিনা নিশ্চিত না .... এটি যদিও কিছু পরিস্থিতিতে বেশ দরকারী মনে হয়।
যোগ লেখক zebediah49, উৎস