সেশন_রাইট_ক্লোজ বলা হওয়ার পরে আপনি কীভাবে একটি সেশন বার্তা যুক্ত করবেন?


9

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

প্রক্রিয়াটি শেষ হওয়ার পরে সেশন বার্তা যুক্ত করার জন্য সেশনটি পুনরায় চালু করা সম্ভব?

পিএইচপি-তে কোনও সেশন পুনরায় চালু করা সম্ভব হয়েছিল কিনা আমি প্রাথমিকভাবে নিশ্চিত ছিলাম না, তবে পিএইচপি কনসেপ্টের প্রমাণ কাজ করে:

session_start();
// if this is the second run, show the value
if (!empty($_SESSION['foo'])) {
    echo $_SESSION['foo'], PHP_EOL;
}
// set an initial value
$_SESSION['foo'] = 'bar';

// start running profile
session_write_close();
// after running profile
session_start();
// set a value to see if it takes
$_SESSION['foo'] = 'foo';

যদিও আমি অ্যাডমিনটিচটিএমএল সেশনে সঠিকভাবে কোনও ফ্ল্যাশ বার্তা সেট করতে সক্ষম হইনি। আমি ভেবেছিলাম আমি এর লাইনে কিছু কল করতে সক্ষম হতে পারি:

Mage::getSingleton('adminhtml/session')
    ->init('core', 'adminhtml')
    ->addSuccess('Whoop');

তবে এটি কাজ করে বলে মনে হচ্ছে না।


আপনি যদি প্রোফাইল কার্যকর করার সময় গ্রাহককে বার্তা প্রদর্শন করতে চান তবে আপনি লগারের উদাহরণ পেতে এবং এতে বার্তা প্রেরণের জন্য $ pofile-> getLogger () ব্যবহার করতে পারেন। এটি পৃষ্ঠাতে তাদের দেখানোর মতো নয়, তবে আপনার
সেগুলির

উত্তর:


4

এই কাজ করা উচিত:

unset($_SESSION);
Mage::getSingleton('adminhtml/session')
    ->init('core', 'adminhtml')
    ->addSuccess('Whoop');

সেশনটি পরে হারিয়ে যায়নি session_write_close(), আপনি যদি আবার সেশনে লিখতে চান তবে আপনাকে এটি আবার খুলতে হবে। ধারণার প্রমাণ:

<?php
session_start();
// if this is the second run, show the value
if (!empty($_SESSION['foo'])) {
    echo $_SESSION['foo'], PHP_EOL;
}
// set an initial value
$_SESSION['foo'] = 'bar';

// start running profile
session_write_close();

// after running profile
session_start();
var_dump($_SESSION);
//// set a value to see if it takes
$_SESSION['test'] = 'foo';

অধিবেশন ডিগ্রি কলটি সেশন_স্টার্টকে কল করার জন্য ট্রিগার করবে না, যেহেতু এটি কেবল তখনই বলা হয় যখন $ _SESSION সেট না করা থাকে (যা এটি কল করার পরে বলে মনে হয় session_write_close)।
পিটার ও'ক্যালাহান

এটি করতে আগ্রহী যে কারও জন্য, এটি সঠিকভাবে কার্যকর করতে আপনাকে করতে হবে unset($_SESSION)। এটি করার পরে initসেশনটি সঠিকভাবে পুনরায় লোড করা হবে।
পিটার ও'ক্যালাহান

@ ক্যাগগুলি আমি আমার উত্তর আপডেট করেছি, আপনি এটি সঠিক কিনা তা পরীক্ষা করতে পারেন?
রিক কুইপার্স

initমেথড কলের অংশ হিসাবে ডাকা হওয়ার সাথে সাথে সেশন_স্টার্টটির প্রয়োজনীয়তা নেই (ভাল startযার দ্বারা ডাকা হয় init)। তা বাদে এটি কাজ করা উচিত।
পিটার ও'ক্যালাহান

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