2012-03-26 10 views
14

मुझे पता नहीं, जहां इस एक के साथ शुरू कर दिया है।समय बीतने के बाद mysql पंक्ति को कैसे हटाएं?</p> <p>मैं एक डेटाबेस है कि <code>postID</code> और <code>Date</code> संग्रहीत करता है:

मैं जो करना चाहता हूं वह है मेरी वेबसाइट ऑटो उन सभी पंक्तियों को हटा देती है जहां Date आज से कम है। इस स्क्रिप्ट में कोई भी उपयोगकर्ता इनपुट नहीं हो सकता है। कोई बटन क्लिक नहीं, कुछ भी नहीं। स्क्रिप्ट मध्यरात्रि में हर दिन चलाना चाहिए।

मैं ऐसा कुछ करने के लिए जगह पर देख रहा हूं जो मुझे करता है और मुझे बिल्कुल कुछ नहीं मिला है।

+0

इस के पहलुओं की एक संख्या हैं: बाद में आप अनावश्यक डेटा mysql आदेश से का उपयोग कर की तरह किसी भी समय पर नष्ट कर सकते हैं 'DELETE' बयान (1) लेखन; (2) एक स्क्रिप्ट बनाना जो 'DELETE' कथन चलाता है; (3) आधी रात को रात को चलाने के लिए स्क्रिप्ट स्थापित करना। उनमें से किसकी आपको सहायता चाहिए? – ruakh

+0

मुझे यह पता लगाने में मदद की ज़रूरत है कि उपयोगकर्ता कोड के बिना स्वचालित रूप से मेरे कोड को कैसे आग लगाना है। नीचे दिए गए उत्तरों सीआरओएन की तरफ इशारा करते हैं, इसलिए मैं उस पर ध्यान दूंगा। – Sweepster

उत्तर

19

आप PHP स्क्रिप्ट का उपयोग कर सकते हैं और अपने सीपीएनल पर क्रॉन जॉब का उपयोग कर सकते हैं।

उदाहरण:

cronjobcommand।PHP

<?php 
include 'your_db_connection'; 
mysql_query("DELETE FROM your_table_name WHERE Date < NOW()"); 
?> 

मैंने आपके संदर्भ के लिए नीचे एक स्क्रीनशॉट संलग्न किया है।

enter image description here

0

आपको इसके लिए cron नौकरी (निर्धारित कार्य) सेट करना चाहिए।

cron job लिनक्स और यूनिक्स ऑपरेटिंग सिस्टम के लिए एक स्वचालित प्रोग्राम सेटअप है। यह उपयोगकर्ता को एक निश्चित समय और तारीख पर कई आदेश या कार्यों को निष्पादित करने की अनुमति देता है।

आपके पास अपने सीपीएनल सेटअप में क्रॉन जॉब है। सबसे पहले आपको प्रत्येक तारीख के बाद रिकॉर्ड हटाने के लिए अपने तर्क के साथ एक PHP स्क्रिप्ट बनाने की आवश्यकता है। सर्वर से तारीख लें और हटाने के लिए स्क्रिप्ट लिखें।

फिर अपने सीपीएनल में क्रॉन टैब पर जाएं और क्रॉन चलाने के लिए समय अंतराल के लिए सेटिंग करें और अपनी PHP स्क्रिप्ट फ़ाइल का पथ दें।

2

अधिकांश होस्ट cron(8) सेवा प्रदान करते हैं जो विशिष्ट समय पर आदेश निष्पादित कर सकते हैं। आप crontab(5) फ़ाइल को प्रबंधित करने के लिए crontab(1) प्रोग्राम का उपयोग करते हैं, जो वर्णन करता है कि कौन से आदेशों को चलाने के लिए वर्णन किया गया है।

आपके लिए बहुत सारी कार्यक्षमता उपलब्ध है, लेकिन यदि आप एक प्रोग्राम (शैल स्क्रिप्ट, PHP स्क्रिप्ट, सी प्रोग्राम, जो कुछ भी) लिखते हैं जो उपयुक्त MySQL कमांड चलाता है, तो आप प्रोग्राम को cron(8) के माध्यम से पूरी तरह से हाथों में कॉल कर सकते हैं- फैशन से बाहर

अपने वर्तमान crontab(5) फ़ाइल को संपादित करने के लिए crontab -e चलाएं। यदि कोई अस्तित्व में नहीं है, तो उम्मीद है कि आप एक सहायक हेडर के साथ एक प्राप्त करेंगे। यदि नहीं, तो इस कॉपी:

# m h dom mon dow command 

कॉलम संकेत मिलता मिनट, घंटे, महीने, महीना, और सप्ताह आदेश पर अमल करने के लिए के दिन के दिन। आदेशों को चलाने के लिए तय करने के लिए कॉलम में सभी संख्याएं अनिवार्य रूप से एक साथ हैं।

इस प्रकार, आधी रात हर रात इस प्रकार दिखाई देगा:

0 0 * * * /path/to/executable 

यह उल्लेखनीय लचीला है, तो प्रलेखन में कुछ समय रखा, और आप इसके लिए कई उपयोग मिल जाएगा।

-2

MySQL में कोई कार्य शेड्यूलर नहीं है। तो आपको मुख्य ऑपरेटिंग सिस्टम (CRON लिनक्स के तहत) के कार्य शेड्यूलर का उपयोग करना होगा, या मुख्य पृष्ठ की स्क्रिप्ट के दौरान मूल कार्य परीक्षक उप-स्क्रिप्ट को दोपहर के भोजन के लिए उपयोग करना होगा (दूसरे पृष्ठ पर जो बदलते डेटा को प्रदर्शित करना है)।

+4

यह सच नहीं है। MySQL में इवेंट शेड्यूलर है, जिसे संस्करण 5.1.6 (2006-02-01) में लागू किया गया है। अधिक जानकारी: [MySQL इवेंट शेड्यूलर] (http://dev.mysql.com/doc/refman/5.1/en/events.html)। – devrique

4

बाहर उन वहाँ जो होस्टिंग, 1and1 की तरह एक साझा कर रहे हैं के लिए, और क्रॉन उपयोग नहीं कर सकते, यहाँ हैं 2 विकल्प:

  • mysql events एक समय ट्रिगर जगह करने के लिए सक्षम MySQL पर, जो किसी भी प्रकार के उपयोगकर्ता इनपुट

  • यदि आप mysql ईवेंट नहीं बना सकते हैं क्योंकि आप 1and1 :(पर हैं, तोका उपयोग करना एक विकल्प है,

तुम बस क्यों cronjobs हर रोज का उपयोग कर PHP स्क्रिप्ट आप चाहें चलाने के लिए का यूआरएल webcron बताने की आवश्यकता है, और वे अंतराल पर यह तुम्हारे लिए ट्रिगर आप

3

करना चाहते हैं? ? आउटपुट पर डेटा फ़िल्टर क्यों न करें। अपने चयन की जांच में उदाहरण के लिए पोस्ट की तारीख एक सरल where को जोड़ने के साथ आज के बराबर होती है, तो:

SELECT * FROM `posts` 
WHERE (DATE(`post_date`) = DATE(NOW())); 

इस तरह आप आवश्यक नहीं कर रहे हैं किसी विशेष समय पर अपने डेटाबेस प्रबंधन/cronjobs करने के लिए और यह हो जाएगा केवल डेटाबेस प्रबंधन के लिए उपयोग किया जाता है।

DELETE FROM `posts` WHERE (
    DATE(`post_date`) < DATE(NOW()) 
) 
+0

मान लीजिए, मेरे पास उस मामले में है, मेरे डेटाबेस में मेरे पास रिकॉर्ड है जो प्रासंगिक तिथि पर पोस्ट किया गया था और कुछ विशेष समय सीमा पर इसे हटाने की आवश्यकता है। स्क्रिप्ट automaticaly चलाने के लिए आप क्या करेंगे? –

+0

@ सुधाकरफाद मेरी देर से प्रतिक्रिया के लिए खेद है; आप उस मामले में अपनी तुलना (पोस्ट_डेट + डेडलाइनटाइम) में समय सीमा जोड़ सकते हैं। –

संबंधित मुद्दे