dvms pear cronjob magento

8
TÀI LIỆU HƯỚNG DN SDNG PEAR VÀ CRON JOB MAGENTO 1.7 Tài liu kthut 07/2012

Upload: dvms

Post on 28-Oct-2014

14 views

Category:

Documents


0 download

DESCRIPTION

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG PEAR VÀ CRON JOB MAGENTO 1.7THÔNG TIN LIÊN HỆ HỖ TRỢDVMS (08) 360 289 37 [email protected] www.DVMS.vn www.raucuquasach.comwww.tracking.dvms.vn

TRANSCRIPT

Page 1: Dvms Pear Cronjob Magento

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG PEAR VÀ CRON JOB

MAGENTO 1.7

Tài liệu kỹ thuật

07/2012

Page 2: Dvms Pear Cronjob Magento

Trang 2 /8

Lịch sử chỉnh sửa

Ngày tháng Version Mô tả Người viết

07/2012 1.7 DVMS

Mục lục

1. PEAR: .......................................................................................................................... 3

2. Cron job: ..................................................................................................................... 4

THÔNG TIN LIÊN HỆ HỖ TRỢ......................................... Error! Bookmark not defined.

Page 3: Dvms Pear Cronjob Magento

Trang 3 /8

1. PEAR:

- Pear trong php: PEAR là một trong những từ ngữ được nhắc đến khá phổ biến trong cộng đồng

PHP. Ở một khía cạnh nhất định, việc sử dụng PEAR sẽ giúp cho các lập trình viên giải quyết

nhanh công việc với chất lượng sinh mã tốt nhờ vào sự phong phú và độ chuẩn của thư viện PEAR.

Tham khảo thêm về thư viện pear tại link sau:

http://www.pcworld.com.vn/pcworld/printArticle.asp?atcl_id=5f5e5c575f5f58

http://pear.php.net/

- Pear trong Magento: dùng thư viện Pear để cài đặt thêm module cho Magento,để dùng chức năng

này bạn phải có phần mềm connect vào hosting hay server của bạn bằng ssh.

Cài các ứng dụng Magento bằng ssh đơn giản, và hiệu quả cao hơn so với Magento connect, nhất là

khi đường truyền server của bạn bị hạn chế (đặc biệt với các server của FPT) vì ssh cho phép bạn

kết nối lâu dài, đủ thời gian để có thể download package cài đặt về server của bạn. Ngoài ra, khi kết

nối ssh, bạn sử dụng tài khoản trên server (tài khoản người dùng Linux) nên việc ghi các file, giải

nén và cài đặt thường không bị lỗi. Còn với trình Magento connect nhiều khi các kết nối không thực

hiện được, do việc quản lý các file, thư mục của Magento không đủ quyền để ghi, giải nén file. Bạn

cần cài đặt pear trước khi thực hiện các thao tác khác, với những bạn dùng shared hosting ở các nhà

cung cấp dịch vụ thì kiểm tra PHP có cài đặt Pear rồi hay chưa ? nếu chưa thì liên hệ với sysadmin

ở nhà cung cấp dịch vụ để họ giải quyết vấn đề này giúp bạn .

Sau khi đã tạo được kết nối ssh với server, bạn dùng các lệnh

ls -a giống như lệnh dir của dos để list các thư mục và tệp tin trong thư mục hiện hành

cd / để trở về thư mục cao nhất

cd tên thư mục để vào thư mục

Tùy theo hosting của bạn, và thư mục nơi bạn cài đặt Magento, bạn dùng các lệnh trên để đến thư

mục gốc của Magento.

Dùng lệnh: ./pear install EXTENSION_KEY

để thực hiện việc cài đặt. Ở đây trong ví dụ này, EXTENSION_KEY là key của module mà bạn

muốn cài đặt, ví dụ: Magento-core/Interface_Frontend_Default_Default_Blue

Tiếp theo là chờ đợi server kết nối với server Magento, download bộ cài và cài đặt. Nếu cài đặt

thành công, máy sẽ báo Installing OK và trở về dòng gõ lệnh

Gõ tiếp lệnh

rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*

để xóa các file cache tạo ra trong quá trình cài đặt

Một số lỗi xảy ra trong quá trình cài đặt

1.Error: cannot download "Magento-community/BouncingOrange_TinyMce"

Page 4: Dvms Pear Cronjob Magento

Trang 4 /8

Install Errors

Download failed

PEAR ERROR: install failed

lỗi này nghĩa là server không thể download bộ cài đặt ứng dụng. Thường do đường truyền của

server bạn quá yếu. Hãy thử cài bằng ssh

2. .Error: cannot write folder

Lỗi này nghĩa là các thư mục trong phần downloader của bạn đang để ở chế độ chống ghi.Thư mục

quan trọng nhất là downloader/pearlib/download/

3. Error ... status="beta"

Lỗi này là do extension bạn muốn cài đặt còn đang ở trạng thái beta (thử nghiệm). Để tiếp tục

install bạn vào phần quản trị Magento connect, vào setting như trong hình 2, chọn Preferred State:

là Beta, hoặc Anpha.

2. Cron job:

- Một vài tính năng trong Magento đòi hỏi một kịch bản để chạy theo định kỳ.

Ví dụ: app/code/core/Mage/CatalogRule/etc/config.xml

<config>

...

<crontab>

<jobs>

<catalogrule_apply_all>

<schedule><cron_expr>0 1 * * *</cron_expr></schedule>

<run><model>catalogrule/observer::dailyCatalogUpdate</model></run>

</catalogrule_apply_all>

</jobs>

...

</crontab>

...

Page 5: Dvms Pear Cronjob Magento

Trang 5 /8

</config>

ở đây tác vụ Mage_CatalogRule_Model_Observer::dailyCatalogUpdate sẽ được thực hiện hàng ngày vào

lúc 01:00am

Bạn có thể tạo ra các tác vụ cho module của bạn trong file cấu hình của module theo cấu trúc sau:

<config>

...

<crontab>

<jobs>

<namespace_module>

<schedule>

<cron_expr>0,15,30,45 * * * *</cron_expr>

</schedule>

<run>

<model>module/model::method</model>

</run>

</namespace_module>

</jobs>

</crontab>

...

</config>

Tác vụ này cứ 15 phút lại thực thi phương thức của module một lần.

- Để thực hiện tất cả các tác vụ mà bạn đã cấu hình thì file cron.php nằm trong thư mục gốc

Magento sẽ cần phải được chạy định kỳ, ví dụ mỗi 15 phút. Về cơ bản nó sẽ kiểm tra các tác vụ cần

thực hiện trong tương lai. Trong môi trường linux thì bạn cần cấu hình cho server của bạn thực thi

file cron.sh định kỳ.

- Một số cron job mặc định của hệ thống được cấu hình thời gian thực thi trong: System >

Configuration > System.

Page 6: Dvms Pear Cronjob Magento

Trang 6 /8

Những tác vụ đó bao gồm:

Page 7: Dvms Pear Cronjob Magento

Trang 7 /8

Link tham khảo:

http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job

http://www.novusweb.com/894/e-commerce-technology/understanding-magento-cron-jobs#.UA3_UaD_msp

http://fishpig.co.uk/blog/magento-cron-jobs.html

Ngoài ra để Cron Schedule Monitior bạn có thể tạo file php có nội dung như sau:

<?php

//Magento Cron script. GNU/GPL //[email protected]

//provided without warranty or support

//================================================================

//insert your database info here

$server='your.server.address:port';

$user='yourusername';

$pass='yourpassword';

$db='yourMySQLdatabasenane';

//end data input

//================================================================

echo "<h1>Magento Cron Schedule</h1><h2>for ".$user."@".$server."</h2>";

//================================================================

//pending jobs

mysql_connect($server,$user,$pass);

@mysql_select_db($db) or die("Unable to select database");

//$query="SELECT * FROM cron_schedule" ;

$query='SELECT * FROM `cron_schedule` WHERE `status` ="pending" ORDER BY `scheduled_at` DESC' ;

$result=mysql_query($query);

$num=mysql_numrows($result);

echo "<h2>".$num." Jobs Pending</h2>";

echo '<table border="1"><tbody>'; echo "<tr><th>schedule_id</th><th>job_code</th><th>status</th><th>created_at</th><th>scheduled_at</th>";

//echo "<th>executed_at</th><th>finished_at</th></tr>";

$i=0;

while ($i < $num) {

$schedule_id=mysql_result ($result,$i,"schedule_id");

$job_code= mysql_result($result,$i,"job_code");

$status=mysql_result ($result,$i,"status");

$created_at=mysql_result ($result,$i,"created_at");

$scheduled_at=mysql_result ($result,$i,"scheduled_at");

$executed_at=mysql_result ($result,$i,"executed_at"); $finished_at=mysql_result ($result,$i,"finished_at");

//output html

echo "<tr>";

echo "<td>".$schedule_id."</td>";

echo '<td>'.$job_code."</td>";

echo '<td style="color: red;">'.$status."</td>";

echo "<td>".$created_at."</td>";

echo "<td>".$scheduled_at."</td>";

//echo "<td>".$executed_at."</td>";

//echo "<td>".$finished_at."</td>"; echo "</tr>";

$i++;

}

Page 8: Dvms Pear Cronjob Magento

Trang 8 /8

echo "</tbody></table><hr>";

//================================================================

//Succsessful jobs

mysql_connect($server,$user,$pass);

@mysql_select_db($db) or die("Unable to select database");

//$query="SELECT * FROM cron_schedule" ; $query='SELECT * FROM `cron_schedule` WHERE `status` ="success" ORDER BY `executed_at` DESC' ;

$result=mysql_query($query);

$num=mysql_numrows($result);

echo "<h2>".$num." Jobs Succsessful</h2>";

echo '<table border="1"><tbody>';

echo "<tr><th>schedule_id</th><th>job_code</th><th>status</th><th>created_at</th><th>scheduled_at</th>";

echo "<th>executed_at</th><th>finished_at</th></tr>";

$i=0;

while ($i < $num) {

$schedule_id=mysql_result ($result,$i,"schedule_id");

$job_code= mysql_result($result,$i,"job_code"); $status=mysql_result ($result,$i,"status");

$created_at=mysql_result ($result,$i,"created_at");

$scheduled_at=mysql_result ($result,$i,"scheduled_at");

$executed_at=mysql_result ($result,$i,"executed_at");

$finished_at=mysql_result ($result,$i,"finished_at");

//output html

echo "<tr>";

echo "<td>".$schedule_id."</td>";

echo "<td>".$job_code."</td>";

echo "<td>".$status."</td>"; echo "<td>".$created_at."</td>";

echo "<td>".$scheduled_at."</td>";

echo "<td>".$executed_at."</td>";

echo "<td>".$finished_at."</td>";

echo "</tr>";

$i++;

}

echo "</tbody></table>";

//================================================================

?>

CHÚC THÀNH CÔNG!

THÔNG TIN LIÊN HỆ HỖ TRỢ

DVMS

(08) 360 289 37 [email protected]

www.DVMS.vn