একটি ইনফর্মিক্স এসপিএল প্রক্রিয়া থেকে ঘুমায়

একটি ইনফর্মিক্স এসপিএল রুটিন এর মধ্যে থেকে ঐতিহ্যগত ঘুম() সিস্টেম কল এর শব্দার্থিক সমতুল্য করার সেরা উপায় কি? অন্য কথায়, কেবল N সেকেন্ডের জন্য "বিরতি" (অথবা মিলিসেকেন্ড বা যাই হোক না কেন, কিন্তু সেকেন্ডগুলি জরিমানা)। আমি একটি সমাধান খুঁজছি যে না ইনফর্মমিন সার্ভারে কিছু নতুন (সম্ভবত আমার দ্বারা লিখিত) সি কোড বা অন্য লাইব্রেরি লিঙ্ক করা জড়িত। এটি এমন কিছু হতে হবে যা আমি SPL থেকে বিশুদ্ধভাবে করতে পারি। আইডিএস 10 বা 11 এর জন্য একটি সমাধান জরিমানা হবে।

@ রেটি - "স্পষ্ট" উত্তর আমার কাছে স্পষ্ট ছিল না! আমি সিস্টেম কমান্ড সম্পর্কে জানি না ধন্যবাদ! (এবং হ্যাঁ, আমি যে ব্যক্তি তোমাকে ভাবছি আমি আছি।)


হ্যাঁ, এটি ডিবাগ করার উদ্দেশ্যে শুধুমাত্র। দুর্ভাগ্যবশত, একটি SPL এর মধ্যে থাকা CURRENT সর্বদা একই মান ফিরে আসবে, কল এন্ট্রি এ সেট:

"any call to CURRENT from inside the SPL function that an EXECUTE FUNCTION (or EXECUTE PROCEDURE) statement invokes returns the value of the system clock when the SPL function starts."

IBM Informix Guide to SQL

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

0
ro fr hi

3 উত্তর

আপনি সুস্পষ্ট উত্তর চান না কিছু ভাল কারণ থাকতে হবে: সিস্টেম "ঘুম 5" । আপনি যদি বিভিন্ন মান ইত্যাদি পরীক্ষা করে থাকেন তবে আপনি যদি চান যে SPL কে বিরতি দেওয়া হয়, তবে এখানে কয়েকটি চিন্তা রয়েছে (যা সবগুলি হ্যাকই অবশ্যই):

  1. TRACE ফাইলটি একটি নামযুক্ত পাইপ (ইউনিকস ব্যাক-এন্ড হ'ল অনুমান করা) তৈরি করুন, তাই এটি আপনার থেকে পড়তে পছন্দ না হওয়া পর্যন্ত ব্লকগুলিকে বা
  2. আরেকটি টেবিল তৈরি করুন যেটি আপনার এসপিএল পোলগুলি একটি WHILE লুপ থেকে একটি নির্দিষ্ট এন্ট্রির জন্য তৈরি করে এবং সন্নিবেশ করে অন্য কোথা থেকে (মারাত্মক অযোগ্য)
  3. আপনার বন্ধুকে SET LOCK MODE করুন: "SET LOCK MODE TO WAIT" এবং "ইচ্ছাকৃত ভাবে একটি টেবিলের প্রয়োজন যা আপনি ইতিমধ্যে একটি কার্সার ধরে রেখেছেন।" অবশ্যই এটি একটি EXCEPTION হ্যান্ডলারের মধ্যে এটি মোড়ানো প্রয়োজন হবে।

আশা করি যে কিছু সাহায্য (এবং আপনি একই Ars এবং রোজ JS- :: DB খ্যাতি, এটি আমি করতে পারে অন্তত ;-)

0
যোগ

আমি অনুমান করি যে আপনি এই ডিবাগ করার উদ্দেশ্যে "বিরাম" চান, অন্যথায় এটি সম্পর্কে চিন্তা করবেন না, আপনার ঘুমের চেয়ে আপনার সার্ভারের জন্য সবসময় কিছু ভাল কাজ থাকবে ...

A suggestion: Maybe you could get CURRENT, add it a few seconds ( let mytimestamp ) then in a while loop select CURRENT while CURRENT <= mytimestamp . I've no informix setup around my desk to try it, so you'll have to figure the correct syntax. Again, do not put such a hack on a production server. You've been warned :D

0
যোগ
শীর্ষস্থানীয় এসকিউএল বিবৃতি রান সময় পরিবর্তন করা হয় না। একটি DBINFO() আছে যা আছে - এবং সেখানে sysmaster যে তথ্য আছে।
যোগ লেখক Jonathan Leffler, উৎস

তারপর আপনি অন্য ফাংশন যে আপনি প্রথম থেকে কল করব বর্তমান (কিন্তু এই পূর্ববর্তী হ্যাক উপর একটি হ্যাক হয়) ঝাঁটা হবে ...)।

0
যোগ