source

cron 작업으로 mySQL 쿼리를 실행하시겠습니까?

factcode 2022. 9. 18. 09:49
반응형

cron 작업으로 mySQL 쿼리를 실행하시겠습니까?

SQL 데이터베이스를 1주일 이상 경과한 모든 엔트리에서 삭제하고 야간 작업을 수행하려고 합니다.cron 작업을 설정합니다.매번 수동으로 비밀번호를 입력하지 않고 mySQL을 조회하려면 어떻게 해야 합니까?

PHP의 쿼리는 다음과 같습니다.

mysql_query("DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7");

이것을 셸 스크립트로 실행할 수 있는 방법이 있습니까?그렇지 않은 경우 cron이 php 파일을 실행하도록 하는 방법이 있습니까?

개인적으로 MySQL 이벤트 스케줄러는 cron보다 사용하기 쉽습니다.

를 사용하여 유효화

SET GLOBAL event_scheduler = ON;

다음과 같은 이벤트를 만듭니다.

CREATE EVENT name_of_event
ON SCHEDULE EVERY 1 DAY
STARTS '2014-01-18 00:00:00'
DO
DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7;

그리고 이것이 마지막입니다.

구문에 대한 자세한 내용은 여기를 참조하십시오.구문에 대한 자세한 내용은 여기를 참조하십시오.

다음과 같은 셸 스크립트를 만들어 보십시오.

#!/bin/bash

mysql --user=[username] --password=[password] --database=[db name] --execute="DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7"

그런 다음 이를 cron에 추가할 수 있습니다.

시스템에서 cron을 실행하는 항목에 따라 다르지만 cron에서 php 스크립트를 실행하기 위해서는 php 설치 위치를 호출하고 스크립트 위치를 호출하기만 하면 됩니다.crontab이 매시간 실행되는 예:

# crontab -e
00 * * * * /usr/local/bin/php /home/path/script.php

시스템에서는 php 설치 경로를 입력할 필요도 없습니다.

00 * * * * php /home/path/script.php

또한 mysql 확장자는 사용되지 않으므로 php의 이전 설치를 사용하지 않는 한 사용하지 마십시오.비교는 이쪽을 참조해 주세요.

유효기간이 < Today >인 mySQL 테이블에서 레코드를 삭제해야 하기 때문에 이 페이지는 매우 편리했습니다.

공유 호스트에 있으며 CRON이 AndrewKDay 제안을 좋아하지 않았습니다.또, 이러한 방법으로 패스워드를 공개하는 것은, 안전하지 않을 가능성이 있다고 하는 것도(동의합니다).

그런 다음 phpMyAdmin에서 이벤트를 켜려고 했지만 공유 호스트에서 다시 한 번 '아니오'미안 팬츠

그래서 저는 SQL 스크립트를 PHP 파일에 포함시키는 쪽으로 방향을 틀었습니다.예를 들어 [여기][1]을 사용했습니다.

[1]: https://www.w3schools.com/php/php_mysql_create_table.asp은 안전한 장소에 서브폴더에 저장하여 적절한 측정을 위해 빈 index.block을 추가하였습니다.이 PHP 파일(및 SQL 스크립트)이 브라우저의 URL 행에서 동작하고 있는지 테스트할 수 있었습니다.

아직까지는 괜찮아.CRON에 접속합니다.위의 예에 따라서, 거의 동작했습니다.나는 내 *.php 파일의 경로 전에 PHP에 전화를 걸게 되었습니다.그렇지 않으면 CRON은 파일을 어떻게 해야 할지 몰랐습니다.

my cron은 하루에 한 번 실행되도록 설정되어 있으며 보안을 위해 이렇게 변경되었습니다.

00 * * * * php mywebsiteurl.com/wp-content/themes/ForteChildTheme/php/DeleteExpiredAssessment.php

CRON을 사용한 최종 테스트에서는 처음에 CRON을 1분 간격으로 실행하도록 설정하고 이메일 경고를 활성화했습니다.이것으로 예정대로 동작하고 있는 것을 금방 확인하고, 1일 1회로 되돌렸습니다.

이게 도움이 됐으면 좋겠다.

언급URL : https://stackoverflow.com/questions/21196613/run-a-mysql-query-as-a-cron-job

반응형