Bài viết được gắn thẻ: cơ sở dữ liệu

Văn phòng lưới máy tính sử dụng môi trường ảo - Phần 4

, thứ Sáu ngày 04 tháng 12 năm 2009 11:59

Giới thiệu

Tôi làm việc trong một công ty mà chúng tôi chạy nhiều công việc hàng loạt chế biến hàng triệu bản ghi dữ liệu mỗi ngày và tôi đã suy nghĩ gần đây về tất cả các máy ngồi xung quanh mỗi ngày và không làm gì trong vài giờ. Nó sẽ không tốt nếu chúng ta có thể sử dụng những máy móc để tăng cường sức mạnh xử lý của hệ thống của chúng tôi? Trong tập hợp các bài viết này, tôi sẽ xem xét các lợi ích tiềm năng của việc sử dụng một văn phòng lưới điện bằng cách sử dụng môi trường ảo hóa.

Trong phần 3, chúng tôi tạo ra máy chế biến ảo của chúng tôi và thiết lập cửa sổ máy để trở thành công nhân có thời gian nhàn rỗi.

Chạy mã mới nhất

Chắc chắn sau khi tạo nhân viên logic kinh doanh của bạn sẽ thay đổi, lỗi sẽ được tìm thấy, mã nhanh hơn hiệu quả hơn sẽ được sản xuất do đó để lại nhân viên của bạn ngồi xung quanh xử lý dữ liệu bằng cách sử dụng cũ đang có mùi . Làm thế nào sau đó chúng tôi đảm bảo rằng chúng tôi luôn sử dụng phiên bản mới nhất và lớn nhất của các kịch bản xử lý của chúng tôi?

Có một vài cách dễ dàng đơn giản, chúng ta có thể làm điều này, thủ đoạn này, tuy nhiên, là để giảm sức mạnh xử lý và mạng lưới giao thông trong việc đạt được điều này. Cho phép bắt đầu với các giải pháp đơn giản và cải thiện từ từ trong một vài lặp đi lặp lại.

Phương pháp đầu tiên là chỉ đơn giản là kết nối với máy chủ kiểm soát công việc của chúng tôi (qua samba, FTP, hoặc tương tự) và kéo xuống các phiên bản mới nhất của mã này. Không phải rất hiệu quả, nhưng nó sẽ làm công việc. Cho phép cải thiện phần nào, làm thế nào về việc tạo ra một kịch bản rsync và sử dụng mà mỗi lần thay vì? Ngoài ra những gì về việc đưa kịch bản xử lý mới nhất của chúng tôi vào lật đổ kiểm tra ra các mã ban đầu và sau đó chỉ cần cập nhật mã của chúng tôi trên mỗi run ( svn cập nhật )

Cuối cùng, chúng ta có thể kết thúc với một kịch bản bash (được gọi là định kỳ mỗi 10 phút) có vẻ đơn giản như sau:

  # / Bin / sh
 nếu ps ax | grep-v grep | grep php > / dev / null
 sau đó
     echo "công việc hiện đang được chế biến, xuất cảnh"
 khác
     echo "Công việc không chạy, bắt đầu ngay bây giờ"
     cd / path / to / / sao chép
     svn cập nhật
     php yourJobProcessingScript.php
 fi 

Bây giờ chúng ta có thể chắc chắn rằng với mỗi lần chạy, chúng tôi chắc chắn đang chạy mã mới nhất. Chúng tôi đảm bảo điều này bằng cách cập nhật cơ sở mã của chúng tôi thời gian và chúng tôi thực hiện một hoạt động và giảm lưu lượng mạng bằng cách chỉ chuyển sự khác biệt tập tin trên mạng của chúng tôi.

Trong thiết lập trình diễn của tôi, tôi đã làm chính xác như trên. Subversion được cài đặt trên máy chủ xử lý công việc của tôi và tôi chỉ đơn giản là kéo mã mới nhất từ ​​một chi nhánh của công nhân bằng cách sử dụng 'svn các bản cập nhật'. Tôi cũng đã thêm một thẻ số phiên bản để xử lý kịch bản của tôi được trả lại cho cơ sở dữ liệu như là một phần của sự trở lại kết quả. Bằng cách này tôi có thể thấy rằng mã của tôi đã được cập nhật mỗi khi tôi sao chép thân của tôi vào các nhân viên, tức là chi nhánh mà tôi chắc chắn chạy kịch bản xử lý mới nhất.

Sử dụng dữ liệu mới nhất

Nếu xử lý công việc của bạn làm cho việc sử dụng các nguồn dữ liệu sau đó tại một số điểm sẽ được cập nhật quá. Trừ khi bạn gọi các nguồn dữ liệu của bạn trên một cơ sở rất thường xuyên bạn sẽ làm tràn ngập hệ thống mạng của bạn với lưu lượng truy cập càng sớm như công nhân của bạn bắt đầu chạy tất cả mọi thứ bế tắc. Đối với giải pháp của tôi, tôi quyết định rằng tôi muốn để di chuyển các nguồn dữ liệu của tôi xung quanh với máy ảo của tôi.

Giữ bạn là con ngựa đó! Nguồn dữ liệu của tôi là gì HUGE? Vâng điều này thực sự là một trường hợp của bao nhiêu dữ liệu chúng ta đang nói? Nó có thể là tiết kiệm chi phí hiệu quả để cài đặt một ổ đĩa cứng bổ sung lớn hơn vào mỗi máy hơn là mua một máy chủ xử lý bổ sung. Đây là một câu hỏi của ngân sách và kinh doanh để quyết định. Nó có thể đó là nguồn dữ liệu của bạn là quá lớn nên không khả thi để giữ cho rằng số lượng dữ liệu trong các máy nhân viên của bạn. Trong trường hợp đó bạn sẽ làm gì? Vâng, chúng tôi có thể nhìn vào gọi một máy chủ dữ liệu địa phương, nhưng điều này có thể gây ra các vấn đề với mạng. Trong trường hợp này, một hệ thống lưới điện như thế này có thể trở thành không thực tế để bao gồm trong môi trường văn phòng của bạn. Nó cũng có thể là bạn có thể nhìn vào các chiến lược thay thế chạy, ví dụ như chỉ kêu gọi công nhân của bạn 20:00-06:00 mỗi đêm và / hoặc nguồn dữ liệu yêu cầu throttling.

Di chuyển trên cho phép nói rằng số lượng nguồn dữ liệu của chúng tôi đến 100GB dữ liệu. Cũng có khá một chút dữ liệu để di chuyển xung quanh mạng cập nhật. Làm thế nào chúng ta sẽ đảm bảo rằng chúng tôi có bản sao mới nhất của các dữ liệu trong trường hợp này? Rsync là một khả năng, nhưng cá nhân tôi nghĩ rằng bằng cách chạy nguồn dữ liệu mới nhất của bạn trên máy chủ xử lý công việc của bạn và thiết lập này lên như là một bậc thầy trong nhân rộng (với một bản ghi bin tốt đẹp lâu dài) có thể là cách để đi:

nhân rộng Bằng cách thiết lập mỗi công nhân của bạn như là một nô lệ các bản cập nhật máy chủ kiểm soát công việc để nguồn dữ liệu của bạn sẽ chảy xuống độc đáo cho người lao động của bạn mà không có một sự gia tăng rất lớn trong hoạt động mạng (có nghĩa là trừ khi bạn thực hiện một cập nhật dữ liệu rất lớn và tất cả các công nhân đá trong cùng một lúc). Điều này có lợi thế hơn rsync trong đó bạn sẽ không nhận được một lúc ngập ngừng trước khi mỗi công việc, như các bản cập nhật cơ sở dữ liệu, mysql daemon nhân viên của bạn sẽ liên tục cập nhật dữ liệu của nó khi xử lý vẫn tiếp tục.

Điều này là làm thế nào tôi thiết lập máy chủ trình diễn của tôi. Để thiết lập sao chép theo hướng dẫn trên trang web mySQL ( Thiết lập sao chép ) và trong vòng 20 phút tôi đã có nhân viên inital của tôi sao chép các tập dữ liệu máy chủ kiểm soát công việc. Đối với mỗi người lao động bổ sung các thiết lập sao chép và quá trình làm việc mỗi khi VM đã được sao chép.

Tóm tắt thông tin

Trong phần này của bài viết chúng tôi đã xem xét cách dễ dàng và không đau là để giữ cho mã xử lý của bạn cập nhật bằng cách using rsync hoặc subverion (SVN) để làm công việc và làm giảm lưu lượng mạng tại cùng một time. Chúng tôi cũng thảo luận làm thế nào để giữ cho nguồn thông tin dữ liệu của bạn up-to-date bằng cách cho phép nó chảy xuống cho mỗi công nhân của bạn. Vì vậy chúng tôi khu vực đảm bảo rằng chúng tôi tiếp tục với logic kinh doanh và thông tin trong hệ thống mạng lưới văn phòng của chúng tôi. Rõ ràng là sẽ có vô số lựa chọn thay thế để thực hiện các nhiệm vụ này, nhưng ở đây là hai ví dụ đơn giản để hiển thị một giải pháp dễ dàng để đi qua.

Tiếp theo thời gian

Trong phần cuối cùng của loạt bài này, aptly tên là Phần 5 , chúng tôi sẽ thảo luận về việc triển khai hệ thống này. Tôi sẽ tóm tắt những gì đã học được và những gì tôi quản lý để tạo ra.

Văn phòng lưới máy tính sử dụng môi trường ảo - Phần 1

, thứ Sáu ngày 04 tháng 12 năm 2009 11:23

Giới thiệu

Tôi làm việc trong một công ty mà chúng tôi chạy nhiều công việc hàng loạt chế biến hàng triệu bản ghi dữ liệu mỗi ngày và tôi đã suy nghĩ gần đây về tất cả các máy ngồi xung quanh mỗi ngày và không làm gì trong vài giờ. Nó sẽ không tốt nếu chúng ta có thể sử dụng những máy móc để tăng cường sức mạnh xử lý của hệ thống của chúng tôi? Trong tập hợp các bài viết này, tôi sẽ xem xét các lợi ích tiềm năng của việc sử dụng một văn phòng lưới điện bằng cách sử dụng môi trường ảo hóa.

Là một PHP phát triển, tôi sẽ sử dụng các công cụ mà tôi sử dụng mỗi ngày cụ thể là, Linux, mySQL , PHP, VirtualBox và lật đổ (SVN). Tuy nhiên tôi hy vọng hướng dẫn này sẽ thích ứng với ngôn ngữ và các công nghệ khác chỉ là tốt.

Các giải pháp tôi cung cấp sẽ được dựa trên các loại chế biến chúng ta cần phải đạt được tuy nhiên điều này có thể không đúng sự thật thông qua toàn bộ bài viết như tôi sẽ thay đổi mọi thứ để đơn giản, hoặc để sản xuất các kịch bản sử dụng thú vị hơn.

Những môi trường ảo hóa sẽ chạy trên cửa sổ máy vì đây là những gì đa số các văn phòng chạy. Việc xử lý các máy văn phòng không nên can thiệp với nhân viên bằng cách sử dụng các máy, nên không cần bảo trì máy tính, và có thể dễ dàng triển khai cho các máy tính mới khi chúng trở nên có sẵn. Ngoài ra, các máy ảo mới không yêu cầu bất kỳ cấu hình bổ sung như điều này làm giảm đáng kể khả năng mở rộng và dễ dàng mà tại đó các hệ thống lưới điện có thể được mở rộng.

Tại sao Triển khai một lưới máy tính văn phòng?

Trước hết bạn có thể nghĩ, tại sao không chỉ sử dụng một nguồn tài nguyên điện toán đám mây như nền tảng EC2 của Amazon ? Vâng, lý do có thể là một số, ví dụ:

  • Bạn sẽ không ủy thác cho các dữ liệu nhất định đến một môi trường điện toán đám mây
  • Bạn không thể đưa dữ liệu nhất định vào một môi trường điện toán đám mây vì lý do pháp lý (dữ liệu ví dụ như rời khỏi đất nước), có khả năng vì lý do pháp lý, ví dụ như NHS hồ sơ.
  • Bạn muốn giữ các đơn vị của bạn xử lý đóng và có toàn quyền kiểm soát phần cứng
  • Bạn không có quỹ dự án để chạy các trường hợp đám mây
  • Văn phòng của bạn không có một kết nối Internet và do đó không phải của nó có thể sử dụng một nguồn tài nguyên điện toán đám mây
  • Bạn không thích mưa, những đám mây cho mưa, do đó bạn giữ tốt ngay

Tôi chắc rằng danh sách có thể tiếp tục, nhưng tôi nghĩ rằng đó là đủ cho bây giờ.

Ưu điểm của một Grid Computing Office

Vâng, cho phép làm một số toán học (và trong phong cách vật lý thực sự cho phép làm cho một số giả định sâu rộng). Hãy tưởng tượng bạn có xử lý máy chủ lớn lực lưỡng chạy 100 việc làm mỗi ngày. Trong văn phòng của bạn, bạn có 50 máy là 16 giờ một ngày nhàn rỗi, các máy này là 10% như mạnh mẽ như cắt đứt xử lý lực lưỡng của bạn. (Tất cả các kết quả ở đây được làm tròn để đánh giá thấp gia tăng hiệu suất).

Vì vậy, 1 máy * 10% công suất * 2/3 thời gian = 0,067 tức là 1 máy tính để bàn chế biến trong thời gian nhàn rỗi có thể xử lý 6 công ăn việc làm đầy đủ mỗi ngày.

Nếu bây giờ bạn mở rộng này lên phải mất 15 máy tính để bàn nhàn rỗi để xử lý công việc như nhiều người mỗi ngày xử lý máy chủ chính của bạn.

Vì vậy, trong văn phòng của chúng tôi giả vờ của 50 máy, chúng tôi có thể làm tăng sức mạnh xử lý của chúng tôi từ 1 máy chủ lên đến 4 máy chủ xử lý đầy đủ, hoặc chúng tôi có thể được chế biến 400 việc làm mỗi ngày thay vì 100.

Thông báo, không có đầu tư phần cứng mới, công ty của bạn vừa tăng công suất chế biến hàng loạt của nó 4 lần! Có khả năng bạn sẽ tăng sử dụng năng lượng của bạn nhưng hầu hết các môi trường văn phòng tôi đã được cho các máy còn lại trên qua đêm nào, vì vậy bạn có thể thấy điều này như một sáng kiến ​​màu xanh lá cây.

Lợi thế khác cũng có nghĩa rằng đầu tư mới hoặc cập nhật các máy chủ xử lý có thể được trì hoãn nếu máy văn phòng của bạn là đủ và khi bạn cải thiện sức mạnh của máy văn phòng của bạn lưới văn phòng của bạn trở nên mạnh mẽ hơn, tự động.

Công nghệ

Những gì bạn cần? (Hay đúng hơn tôi đã sử dụng những gì):

  • Máy văn phòng nhàn rỗi (trong trường hợp của tôi, một phụ tùng máy tính xách tay Windows XP)
  • VirtualBox (hoặc khách hàng phần mềm ảo hóa khác)
  • Một máy ảo với PHP, mySQL running chạy cắt giảm hệ điều hành, tôi kêu gọi các máy chủ của tôi khập khiễng :)
  • Việc để chạy
  • Công việc máy chủ (có thể là một máy ảo một nơi nào đó)

Điển hình Việc làm

Các loại công việc mà hệ thống này được thiết kế để chạy như sau:

  • Hệ thống nhận được một danh sách các dữ liệu khi mà chúng ta cần để phù hợp và trả lại kết quả
  • Kết hợp liên quan đến việc kiểm tra / tìm kiếm dữ liệu nguồn một số (khá tĩnh)
  • Kết quả từ các nguồn dữ liệu có thể yêu cầu xác nhận thêm, sáp nhập, kiểm tra các nguồn dữ liệu bổ sung để đáp ứng với kết quả
  • Dữ liệu được trả về với các bản ghi phù hợp, đầy đủ xác nhận và xử lý
  • Mỗi bản ghi trong một công việc độc lập với phần còn lại

Vì vậy, về cơ bản chúng tôi đang tìm kiếm cái chạy các công việc có yêu cầu một hỗn hợp của cơ sở dữ liệu tra cứu và một số crunching số, một kịch bản khá điển hình trong một môi trường kinh doanh.

Giải pháp mạng lưới không chỉ thuận lợi cho chế biến công việc của loại này. Về cơ bản, bất kỳ quá trình có thể được chia thành các đơn vị độc lập có thể được chạy song song. Xem wikipedia cho các ví dụ và biết thêm thông tin: Điện toán lưới , nhưng một vài ví dụ nổi tiếng là Seti @ HomeBIONC . Có khuôn khổ để chạy các lưới điện toán, và đây cũng có giá trị xem xét.

Những gì chúng ta sẽ đạt được?

Đến cuối những bài viết này, tôi hy vọng rằng việc triển khai một mạng lưới văn phòng không cần phải là cực kỳ đắt tiền hoặc tốn thời gian. Tôi sẽ thảo luận:

  • Thiết lập hệ thống kiểm soát công việc, công việc cấu hình
  • Tạo một máy xử lý thích hợp ảo
  • Làm thế nào để thiết lập các hệ thống trên một máy cửa sổ
  • Đảm bảo bạn đang sử dụng mã mới nhất và dữ liệu
  • Triển khai và điểm chuẩn
  • Nhìn về phía trước

Tôi sẽ xây dựng (ok tôi được xây dựng, sau đó viết này) là một ứng dụng ví dụ để kiểm tra các khái niệm trên một máy địa phương sử dụng Windows XP và GridMachine 'máy ảo của tôi. Công việc máy chủ kiểm soát của tôi sẽ là máy chính của tôi mà chạy Fedora 11 .

Này không có nghĩa là để chứng minh một hệ thống hoàn toàn làm việc mạnh mẽ, có nghĩa là một cuộc biểu tình và thảo luận cho thấy rằng những điều này có thể đạt được trong một không gian ngắn hợp lý thời gian và chi phí ít. Xin vui lòng gửi cho tôi bất kỳ ý kiến, chỉnh sửa, hoặc cải tiến và tôi sẽ làm hết sức mình để giữ cho bài viết này cập nhật cho phù hợp.

Tiếp theo thời gian

Trong phần 2 tôi sẽ bắt đầu bằng cách nhìn vào hệ thống điều khiển công việc, và nhìn vào công việc nên được cấu hình để đạt được số tiền lớn nhất của chế biến trong khi đảm bảo rằng mỗi công việc được xử lý mà không thất bại.

Văn phòng lưới máy tính sử dụng môi trường ảo - Phần 2

, thứ Sáu ngày 04 tháng 12 năm 2009 11:23

Giới thiệu

Tôi làm việc trong một công ty mà chúng tôi chạy nhiều công việc hàng loạt chế biến hàng triệu bản ghi dữ liệu mỗi ngày và tôi đã suy nghĩ gần đây về tất cả các máy ngồi xung quanh mỗi ngày và không làm gì trong vài giờ. Nó sẽ không tốt nếu chúng ta có thể sử dụng những máy móc để tăng cường sức mạnh xử lý của hệ thống của chúng tôi? Trong tập hợp các bài viết này, tôi sẽ xem xét các lợi ích tiềm năng của việc sử dụng một văn phòng lưới điện bằng cách sử dụng môi trường ảo hóa.

Trong phần 1, tôi đã đưa ra một cái nhìn tổng quan của hệ thống và công nghệ sẽ được sử dụng cũng như thảo luận một số trong những lý do tiềm năng, tại sao bạn sẽ muốn tạo ra một mạng lưới văn phòng.

Công việc kiểm soát

Nếu bạn đang chạy công việc sau đó bạn sẽ cần một số cách để quản lý chúng. Hệ thống (trên máy chủ công việc của bạn) kiểm soát công việc của bạn cần được thực sự cũng nghĩ ra ngay cả trước khi cố gắng chạy một mạng lưới văn phòng. Vì vậy, trước hết, nhiệm vụ cho một hệ thống kiểm soát công việc là gì:

  • Đưa ra công việc theo yêu cầu của người lao động
  • Yêu cầu người lao động những gì loại của công việc để chạy
  • Theo dõi công việc
  • Đảm bảo rằng công việc chỉ chạy một lần
  • Cung cấp dữ liệu việc làm cho người lao động, hoặc ít nhất là nói với họ để có được nó

Hệ thống này cũng cần phải được mở rộng, một giải pháp mà làm việc cho một trường hợp duy nhất có thể được mở rộng để chạy một số loại công việc khi doanh nghiệp nhìn thấy giá trị trong một giải pháp lưới. Ví dụ, công việc có thể đạt được ưu tiên, nhiều hơn một loại hình làm việc có thể tồn tại (tức là một số cơ sở mã), cuối cùng bạn thậm chí có thể chạy một số máy công nhân khác nhau được tối ưu hóa cho từng loại công việc (mặc dù điều đó không di chuyển ra khỏi người lao động chung chung ' 'ý tưởng). Luôn luôn cố gắng để suy nghĩ về tương lai khi phát triển hệ thống, một tầm nhìn ngắn hạn có thể dẫn đến thất vọng dài hạn và tăng thời gian phát triển.

Công việc máy chủ

Chúng tôi sẽ cần một nơi nào đó để kiểm soát công việc của chúng tôi, điều này sẽ là hệ thống duy nhất trong mạng lưới của bạn có một bộ định vị tài nguyên cố định, là một địa chỉ IP, tên máy, URL (bằng cách sử dụng nội bộ DNS), ... Điều này là do người lao động cần phải biết nơi để tìm việc làm, công nhân cần phải tìm ra hệ thống kiểm soát công việc (không hệ thống điều khiển công việc tìm thấy những công nhân).

Các máy chủ bản thân công việc không thực sự có một nhiệm vụ phức tạp (trong một hệ thống cơ bản dù sao đi nữa), nó cần để lưu trữ một danh sách việc làm, bàn tay ra việc làm, nhận kết quả, và sau đó lưu trữ chúng để thu hồi sau. Làm thế nào các bộ phận này (chẳng hạn như 'tay ra công ăn việc làm ") được định nghĩa có thể là rất cơ bản. Sau đó, chúng tôi có thể mở rộng hệ thống để bao gồm một giao diện quản trị để thêm, chỉnh sửa, xóa, đình chỉ công việc nhưng điều này vượt ra ngoài tập thể dục này.

Có là không có lí do gì sau đó là máy chủ công việc của bạn không có thể là một máy ảo đang chạy trong máy chủ xử lý chính của bạn cung cấp nó không thoát nước quá nhiều tài nguyên từ nó. Tuy nhiên, các máy chủ công việc không cần sẵn sàng cao, nếu nó đi vào một buổi tối bạn sẽ mất cả một ngày cuối tuần chế biến, có khả năng chi phí cho bạn một vài tuần giá trị của thời gian xử lý (khi so sánh với máy chủ xử lý chính của bạn một mình) . Bạn có thể muốn xem xét việc đặt máy chủ công việc của bạn trên một môi trường cân bằng tải cho sẵn sàng cao.

Cơ bản cài đặt

Thiết lập cơ bản cho máy chủ công việc của chúng tôi sẽ bao gồm những gì tôi đang kêu gọi một trong các máy chủ khập khiễng của tôi (đó là Li nux, m ySql, P HP). Đang chạy trên công nhân Thea thực sự sẽ làm việc ra những công việc nó có thể chạy bằng cách tương tác với với cơ sở dữ liệu hệ thống điều khiển công việc. Sau đó chúng ta có thể tạo ra một dịch vụ web và bàn tay thực sự ra công ăn việc làm hơn là có người lao động làm các công việc khó khăn, bản thân, nhưng bây giờ chúng tôi sẽ tiếp tục sử dụng các nguyên tắc KISS (Hãy giữ nó đơn giản, Stupid).

Vì vậy, cho phép tạo ra ba bảng mySQL để đối phó với công việc. Đây sẽ là công việc `,` jobRecords `, và` jobResults `.

Việc bảng Ở đây tôi đang sử dụng SQL Buddy một chút thay thế tuyệt vời để phpMyAdmin chỉ vì nó dễ dàng hơn để cài đặt trên CentOS (đối với những người khác nhìn thấy: 10 Đại lựa chọn thay thế để phpMyAdmin )

Bảng này bao gồm 5 lĩnh vực đơn giản,

  • id: Độc đáo xác định các công việc
  • name: có thể là một tài liệu tham khảo khách hàng, hoặc bất kỳ số nào của định danh khác
  • Tình trạng: Bạn cần phải biết công việc, ví dụ như
    • 0: Không bắt đầu
    • 1: chọn
    • 2: Đã hoàn thành
  • started_by: Ai bắt đầu làm công việc? Điều này không hoàn toàn bắt buộc nhưng là một tốt đẹp để có. Tôi muốn đề nghị nhân viên theo dõi địa chỉ IP của họ trên mạng của bạn
  • started_at: Khi nào công nhân bắt đầu công việc? Bằng cách theo dõi các công việc không hoàn tất trong vòng X số lượng thời gian chúng ta biết chúng ta cần nhận công việc một lần nữa và bắt đầu chế biến bằng cách công nhân khác. Người lao động có thể ngăn chặn xử lý / đi offline cho bất kỳ số lý do mất điện, tai nạn, mất mạng.

Nó rất dễ dàng bảng này có thể được mở rộng với một vài trường bổ sung cho phép theo dõi số liệu thống kê, kết thúc cột một thời gian để xem bao lâu công việc, một truy cập để xem có bao nhiêu công nhân được các công việc (rõ ràng điều này cần phải có xu hướng 1), công việc ưu tiên, danh sách có thể đi và về. Trong kịch bản công việc phức tạp hơn, nó sẽ có thể xác định bao nhiêu bộ nhớ người lao động sẽ cần truy cập vào (và do đó chỉ sử dụng lao động thích hợp), hoặc thậm chí của người lao động sẽ được yêu cầu.

Cho phép thêm một số công việc ví dụ:

ví dụ công việc

Bảng tiếp theo lại là khá đơn giản để hiểu, đây là hồ sơ công việc của chúng tôi. Họ được liên kết với bảng công việc chính của một cột jobs_id `. Làm cho bảng này phụ thuộc rất nhiều vào dữ liệu mà bạn cần phải cung cấp cho công nhân của bạn, cho phép thực hiện một ví dụ rất đơn giản, nơi chúng tôi có bốn cột:

  • id: ID của các hồ sơ
  • tên: tên của Người
  • địa chỉ: địa chỉ của Người
  • jobs_id: ID công việc mà hồ sơ này được liên kết với

Bảng thứ ba và cuối cùng bao gồm một bảng kết quả, nó có nhiều giống như là bảng hồ sơ của chúng tôi, và với việc bổ sung một số cột có thể là một phần của bảng hồ sơ:

  • job_record_id: Liên kết kết quả các bảng công việc
  • Kết quả: dữ liệu kết quả

... Và đó là tất cả những gì bạn cần để kiểm soát công việc! (Mặc dù ở một mức độ rất cơ bản) Trong trường hợp của tôi tôi chỉ ra một bảng dữ liệu của tôi để xử lý được đặt, nhưng điều này có thể chỉ là một cách dễ dàng là một tập tin, các thông số để chạy mã mô phỏng, bạn đặt tên cho nó.

Lựa chọn một công việc

Như đã nêu trước đây, các công nhân sẽ làm quản lý công việc của chúng tôi cho chúng ta bây giờ, vì vậy tất cả chúng ta cần phải thực sự làm là tìm một công việc cần xử lý và có được thông tin. Làm thế nào chúng tôi sẽ làm điều này? Cũng chọn tiêu chí lựa chọn công việc của chúng tôi và tìm kiếm công việc, trong SQL tôi đã làm như sau:

  1. Đi bất kỳ công việc không được đánh dấu đầy đủ nhưng từ nhân viên của chúng tôi và đặt lại (thay thế ME__ __ với một định danh, đơn giản nhất sẽ là địa chỉ IP):
      CẬP NHẬT `công việc` SET `tình trạng` = 0 ở đâu `tình trạng` = 1 AND `started_by` = __ ME__; 
  2. Sử dụng các tiêu chí lựa chọn công việc của chúng tôi, chọn một công việc và cho biết hệ thống kiểm soát mà công nhân này là đối phó với nó:
      CẬP NHẬT `công việc` SET `tình trạng` = 1, `started_by` = __ ME__, `started_at` = NOW () WHERE `tình trạng` = 0 OR
     (`Tình trạng` = 1 VÀ `started_at`> DATE_SUB (NOW (), INTERVAL X Giờ)) ORDER BY `id` ASC; 

    Bởi việc làm lấy mà không trả lại kết quả trong X số lượng thời gian chúng tôi đảm bảo rằng tất cả các công việc được chạy trong trường hợp của một công nhân bị rơi hoặc đi AWOL.

  3. Tiếp theo lấy các chi tiết công việc tiếp theo là các hồ sơ tự:
      SELECT * FROM `công việc` WHERE `started_by` = __ ME__ LIMIT 1;
     Chọn * FROM `job_records NƠI` id `= __ JOBID__; 

Sau khi hoàn thành công việc, chúng tôi ghi chèn kết quả của chúng tôi và đánh dấu công việc là hoàn thành. Hãy nhớ là việc làm có thể tạm dừng / tiếp tục bất cứ lúc nào cho phép một số mạnh mẽ trong kịch bản của bạn. Nó có thể là công việc đình chỉ một nửa thông qua cập nhật hệ thống kiểm soát công việc, do đó, kiểm tra số lượng hồ sơ trong một công việc và số lượng các kết quả được lưu lại hệ thống kiểm soát công việc sẽ là một động thái khôn ngoan.

Ngoài ra, trong khi điều này chứng minh làm thế nào công việc có thể được lựa chọn và quản lý từ một khung truy vấn SQL bạn thực sự cần được trừu tượng hóa kiểm soát công việc của bạn rằng nếu bạn quyết định chuyển sang sử dụng một dịch vụ web, tập tin dựa trên hệ thống, XML , hoặc bất kỳ khác số hệ thống, nó sẽ không ảnh hưởng đến các mã trên nó.

Công việc cấu hình

Các khía cạnh tiếp theo để xem xét là việc làm kích thước và cấu hình. Bằng cách chơi với cấu hình việc làm, chúng ta có thể tấn công một sự cân bằng tuyệt vời giữa tốc độ, quá trình sao chép, và độ tin cậy. Đi một vài kịch bản OFA:

  1. Việc làm mất 1 ngày để chạy: Điều này có nghĩa rằng các nhân viên của bạn cần 15 ngày, kể từ ngày xử lý từng công việc (nhớ 10% năng lượng cho 2/3rds trong thời gian). Điều này rõ ràng không phải là một cấu hình khôn ngoan, quy mô công việc của bạn là cách quá lớn! Nó sẽ mất ít nhất là gấp đôi thời gian để có được một công việc xử lý các nhân viên ban đầu nên đi AWOL (thời gian nhận rằng nó đã không trở về một kết quả cộng với thời gian tái chế). In an ideal you'd have at least one full job easily cleared by the end of each long idle period, that way you keep the jobs ticking over and at worst case a job would take two days to process should the first go missing.
  2. Jobs take 1 minute to run: This means that your workers take about 15 minutes to run each job. Whilst this may initially seem ideal, you gain additional work processing during lunch time, coffee breaks, meetings, etc this scenario puts strain on other areas of your system and introduces its own problems. For example, firstly your setup/processing time ratio is going to go right down, therefore losing system efficiency. Your network is going to be constantly streaming job information to the various workers frustrating staff who are dong their day to day work. You're also going to put more strain on your job processing server as it has to dish out lots and lots of small pieces of work on a regular basis. Lastly, in this situation if your job server goes down you're going to create a huge back log of uncompleted work whereas bigger jobs could of continued processing blissfully unaware that the job server was experiencing difficulties.

In reality there will be no one ideal configuration for your grid setup, much depends on the available resources, types of job, job turnaround time requirements, network capability, and so on. However some guidelines would be:

  • Size jobs so that each worker can get through at least 3-4 jobs in a period of 15 hours (the longest likely idle time period)
  • Play with the job size so that setup time becomes fairly insignificant compared to the processing time (bearing in mind the above point).
  • If a job doesn't complete in double the amount of time (maybe less) you expect it to complete it assume that its gone AWOL and start processing it with another worker. This means you may have to wait up to three times the normal length of a job for it to complete (possibly longer if the subsequent job fails). You may want to reduce this time, but be careful not to reduce it too much as you may start duplicating processing tasks on a regular basis.
  • Jobs should be independent of outside requirements as much as possible. The job server, for example, should only be contacted at the start and end of every job.
  • Don't saturate your network, this will have two negative effects, your daytime staff will find using the network frustrating and problems may be experienced with connections timing out a problem that will only get worse as you scale your grid.
  • Ensure jobs can run on your workers. If jobs become too memory intensive or disk space intensive jobs will start aborting and the only thing you'll notice is a drop in number of jobs processed with no real reason why.

Submitting Results of a Job

When submitting the results of a job it is important to check that results have not been submitted by another worker, especially if the current worker has been dormant for some time.

When results are submitted ensure that the number of results matches the number of records within the job.

As stated previously, and can not be over emphasised, build fault tolerance into job retrieval and results submission. The workers can (and most likely will) go into suspend mode at the most inconvenient of times and this needs to be catered for. Also once again abstracting away your results submission will help cater for future changes to your job control system much easier to deal with.

Tóm tắt thông tin

In this section we have looked at what a job control server needs to do and how to get a very basic system set up. We discussed how to retrieve a job from the control system and how best to configure jobs to get the most our of your office grid system. To finish, a paragraph or two on submitting results back to the job control server was presented.

  • A job control server manages jobs and ensures that all work units are completed
  • By abstracting your job select/results submission we can change the technology of the control server without much problems
  • Configure your jobs to ensure that they are run quickly and efficiently without putting too much pressure on your network infrastructure, and without duplicating processing tasks on a regular basis.
  • Ensure that you build fault tolerance and error checking into your routines, workers can suspend and resume and the most inconvenient of times. Remember to check if results have already been submitted by another worker.

Next time

In part 3 we'll create our virtual processing machine and set up our windows machines to become idle-time workers.

Office Grid Computing using Virtual environments – Part 5

By , Friday 4th December 2009 11:03 pm

Giới thiệu

Tôi làm việc trong một công ty mà chúng tôi chạy nhiều công việc hàng loạt chế biến hàng triệu bản ghi dữ liệu mỗi ngày và tôi đã suy nghĩ gần đây về tất cả các máy ngồi xung quanh mỗi ngày và không làm gì trong vài giờ. Nó sẽ không tốt nếu chúng ta có thể sử dụng những máy móc để tăng cường sức mạnh xử lý của hệ thống của chúng tôi? Trong tập hợp các bài viết này, tôi sẽ xem xét các lợi ích tiềm năng của việc sử dụng một văn phòng lưới điện bằng cách sử dụng môi trường ảo hóa.

Trong phần 4, chúng tôi đã sử dụng các công cụ để đảm bảo rằng chúng tôi đang chạy phiên bản mới nhất của các nguồn mã và dữ liệu để kết quả thu được là luôn luôn up-to-ngày với các thông tin kinh doanh mới nhất và logic.

Trước khi triển khai

Trước khi triển khai hệ thống mạng lưới của bạn nếu có một điều bạn làm và một điều một mình, nó là điểm chuẩn hệ thống hiện tại của bạn! Không có vấn đề gì bạn nói với đồng nghiệp về bao nhiêu thêm công việc hệ thống của bạn sẽ làm gì trừ khi bạn có con số để sao lưu này lên bảo lãnh của bạn là không có gì. Vì vậy,

  • có bao nhiêu hồ sơ bạn có thể xử lý hiện tại? Mỗi ngày? Mỗi giờ?
  • Làm thế nào lâu nó thường xoay quanh một công việc?
  • Nhiều hơn năng lực bạn có?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

Deployment

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

Stop!

What if you want to stop your workers from running at some time? They are all out there running, regenerating, and trying their best to process data like hungry insects. The answer may seem obvious but its worth adding just in case its overlooked. Simply edit your processing script with an exit(0) or die() or some other statement to kill your processing job. An important reason why we always try to update to the latest processing script before any run!

Demonstration System

In order to write this set of short articles I created a very small grid to demonstrate the technologies and methodologies. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

The next obvious step would be to actually get a real world example and start to deploy a system such as this within an office environment and see what happens. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.

I created a basically free system using mostly open source software and tools available in almost any office. The technologies were basically demonstrated and show to perform and work as expected. Hopefully I have show that with not much work and with a very simple setup you can deploy an office grid computing system that is powerful, cheap, and scalable all at the same time.

Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. For example statistics / benchmarking can easily be added showing the worth of such a system every day. New machines can be added quickly and easily as and when they arrive with upgrades to existing hardware bolstering your processing power.

I hope you've enjoyed reading this series of articles and its given you food for thought on running an office grid system. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

Please feel free to send me any comments, corrections, or improvements and I'll do my best to keep this article updated to match.

Zend Framework: Nguyên tắc cơ bản - Đánh giá

, Thứ Bảy 28 Tháng 11 2009 22:42

Người sử dụng lao động của tôi gần đây đã trả tiền cho một nhóm các nhà phát triển chúng tôi để có những Zend Framework: khóa học cơ bản , ở đây tôi sẽ tóm tắt những suy nghĩ và ý kiến của tôi về các khóa học cho những người khác. Đối với những người tìm kiếm để tiết kiệm thời gian, đây là bản tóm tắt của tôi:

Đối với các nhà phát triển đã không có thời gian để nhìn vào Zend Framework khóa học này (Zend Framework: Nguyên tắc cơ bản) cung cấp một bức tranh tổng thể của khuôn khổ giới thiệu bạn đến các khu vực trọng điểm và đưa ra đủ thông tin để tiếp tục. Đối với những người đã dành thời gian nhìn vào khuôn khổ và theo một hoặc hai hướng dẫn khóa học này không cung cấp nhiều hơn thế nữa.

Bối cảnh

Tôi đã được một PHP phát triển trong khoảng 5-6 năm, và đã bắt đầu làm việc với Zend Framework trên cơ sở thành phần trong 6 tháng qua. Tôi đã phát triển và / hoặc là một nhà phát triển trên một vài nhỏ Zend Framework MVC sites. tôi sẽ trung thực, tôi đã không có một lượng lớn các tiếp xúc với các khuôn khổ khác từ một mã hóa nhưng đã dành một số giờ nghiên cứu các trang web dự án và đánh giá them. khuôn khổ và cộng đồng xung quanh Zend Framework nó là khá thú vị và hình như vẫn có khả năng rất lớn trong nơi của nó đi.

Giới thiệu về các khóa học

Khóa học được cung cấp trên 9 hai giờ WebEx phiên (với một break 10 phút ở giữa). Thời gian là chi tiêu sẽ thông qua một tập hợp các slide được cung cấp bởi Zend với cuộc thảo luận bất cứ lúc nào. Bạn có thể sử dụng một micro để nói chuyện với người hướng dẫn, nhưng phải trung thực tôi không thấy bất cứ ai sử dụng bất cứ điều gì nhiều hơn so với các cửa sổ chat. Ngoài ra một máy VMWare Ubuntu được cung cấp có mã ví dụ, dự án thiết lập một phiên bản dùng thử của Zend Studio. Các khóa học nói nhà lãnh đạo tham dự hoặc qua một giải pháp tích hợp VoIP, hoặc bạn có thể quay số bằng cách sử dụng một trong quay số trên toàn thế giới trong số.

Trong khóa học, vật liệu bao gồm một tổng quan về các Framework và mô hình MVC trước khi đi vào một ứng dụng mẫu lưu bút. Các cuộc thảo luận đã chứng minh bootstrapping, Zend_Application, Db Bàn, truy cập cơ sở dữ liệu, hình thức, Filtering, ACL, Members, vv, vv Về cơ bản bao gồm tất cả các chủ đề bạn muốn yêu cầu để có được một trang web cơ bản lên một thời gian chạy tất cả các bạn những công cụ để đi và được nâng cao hơn trong khuôn khổ (mặc dù điều này đã làm số tiền 'Xem trang web nhiều thời gian).

Thời gian được đưa ra để mã lên một số ví dụ, và phát triển của lưu bút và ứng dụng đơn giản "wiki". Cá nhân tôi cảm thấy rằng việc cung cấp mã hoặc từng ứng dụng và sau đó yêu cầu chúng tôi phát triển bản chất là một bản sao bên cạnh đã không thực sự cung cấp một kinh nghiệm học tập tốt. Tôi đã có thể ưa thích để phát triển một ứng dụng tương tự, nhưng không giống nhau. ứng dụng ví dụ với lợi ích của việc có một hướng dẫn để tham khảo. Ngoài ra xây dựng các ứng dụng từ đầu với người biểu tình sẽ có thể dẫn đến câu hỏi về lý do tại saolàm thế nào, do đó đưa ra một sự hiểu biết tốt hơn về khuôn khổ, sau khi tất cả các bạn có thể tìm kiếm các chi tiết cụ thể sau khóa học.

Các bài giảng cuối cùng bao gồm làm việc trên các ứng dụng wiki với sự giúp đỡ / hướng dẫn từ người hướng dẫn. Sau khi các thông tin phản hồi của khóa học đã được chụp, nó đã được nhấn mạnh nhiều lần thông qua các khóa học Zend có phản hồi rất nghiêm túc, trên thực tế dường như phiên bản của chúng tôi tất nhiên là khá mới. Một số các nhà phát triển khác trong công ty sẽ được tham gia khóa học sớm, vì vậy nó sẽ được thú vị để xem nếu điều này đã xảy ra.

Phong cách khóa học chính thức, cho phép thông tin phản hồi và hợp tác giữa người tham dự và hướng dẫn. Các nhà lãnh đạo khóa học thân thiện, tiếp cận (địa chỉ email đã được chia sẻ cho các câu hỏi), và trong khi thuyết trình của mình từ các trang trình bày là một chút run rẩy coi như hoàn toàn có thẩm quyền trong khuôn khổ. Ông rõ ràng là một người sử dụng khuôn khổ một cách thường xuyên hơn là những người được dạy để dạy các khóa học, tôi thích kinh nghiệm thực thế giới trong đó tôn trọng.

Nhìn chung Feeling

Trong một số cách tôi tìm thấy quá trình một sự lãng phí thời gian, những người khác nó là rất tiện dụng. Hy vọng rằng tôi sẽ nhận được lý do của tôi trên toàn rõ ràng, và có thể cung cấp một số thực phẩm cho tư tưởng hoặc ý kiến ​​phản hồi hữu ích (biết điều này là không!).

Cho bản thân mình, khóa học này nhằm mục đích ở mức quá thấp. Đã thông qua hướng dẫn QuickStart, đọc Rob Allen của Zend Framework trong hành động, và làm việc với khuôn khổ một chút, tôi đã không thực sự nhận được bất cứ điều gì quá nhiều. Tôi sẽ thích quá trình từ khi kết thúc của QuickStart và phát triển các kỹ năng bổ sung.

Điều đó nói rằng, tên khóa học không ghi rõ "Zend Framework: Nguyên tắc cơ bản" và trong khía cạnh đó, khóa học đạt được những gì nó đặt ra để làm. Các thành viên khác của nhóm phát triển đã không dành thời gian nhìn vào khuôn khổ kết thúc mỗi phiên với sự nhiệt tình và yêu cầu các câu hỏi được thực sự tốt đẹp để xem.

Tất cả đã không bị mất, nó là tốt để dành nhiều thời gian xác nhận các chi tiết cơ bản của khuôn khổ và có thể đưa ra một vài câu hỏi trong lĩnh vực mà tôi không phải 100%. Đây cũng là thời gian mà tôi có ngồi xuống mỗi ngày và suy nghĩ về mã hóa bằng cách sử dụng các dự án khuôn khổ và tương lai, một cái gì đó tôi sẽ không thể làm khác (bạn có thể tưởng tượng công ty của bạn đồng ý với điều đó? :)). Cuối cùng nhưng không ít nhất bạn cũng có được một giấy chứng nhận tốt đẹp từ Zend để nói rằng bạn tham dự khóa học (mặc dù bằng email).

Zend Khung chứng nhận

Đây là một câu hỏi mà đến tâm trí trong suốt khóa học, nó sẽ chuẩn bị cho tôi xác nhận? , Nhanh chóng dễ dàng là một Không vang dội. Hướng dẫn khóa học là khá rõ ràng rằng với những lời khuyên bổ sung xác nhận bạn thực sự nên được sử dụng khuôn khổ một ngày để cơ sở ngày và cảm thấy rất thoải mái và tự tin trong việc sử dụng và phương pháp của nó.

Tóm tắt thông tin

Với tất cả những gì tôi đã viết ở trên, tôi sẽ tóm tắt tất cả mọi thứ trong hai điểm viên đạn dễ dàng:

  • Zend Framework: Khóa học này không chính xác những gì bạn mong đợi, nó mang lại cho bạn một giới thiệu tốt đẹp để các khuôn khổ và nền tảng tốt về những điều cơ bản mà từ đó bạn có thể xây dựng. Khóa học này dường như tạo ra lợi ích và sự nhiệt tình cho các khuôn khổ giữa các nhà phát triển.
  • Được sử dụng Zend Framework: Trong khi nó đã được tốt đẹp để vực dậy một số điều cơ bản rất, tôi cảm thấy thời gian, nỗ lực, và các quỹ để có những khóa học có thể được tốt hơn chi tiêu ở nơi khác. Nó sẽ được tốt đẹp see Zend tạo ra một khóa học cấp cao hơn mới có các nhà phát triển để cấp độ tiếp theo. Ít nhất là tiêu chuẩn chứng nhận và hơn thế nữa Đối với tôi sẽ đăng ký ngay lập tức.

Đăng nhập vào DB bằng cách sử dụng Zend Framework

, thứ ba 14 tháng tư 2009 21:06

Tôi đã quản lý để có được một trang web và chạy với Zend Framework , tất cả mọi thứ được đăng nhập độc đáo để Firebug / FirePHP vì vậy bước tiếp theo là để đăng nhập vào DB. Tôi cũng muốn để đăng nhập một số thông tin bổ sung bằng cách sử dụng các khuôn khổ như vậy là đại lý của người sử dụng, ngày và thời gian, nhận và gửi các biến. Vì vậy, để mở rộng các hướng dẫn sử dụng một chút ở đây là những gì tôi đã làm:

// Set up logging to DB
$db = Zend_Registry ::get('dbAdapters');
$db = $db['general'];

$columnMapping = array( 'priority' => 'priority',
'message' => 'message',
'datetime' => 'timestamp',
'user_agent'=> 'user_agent',
'get_vars' => 'get_vars',
'post_vars' => 'post_vars',
'site' => 'site'
);

$writerDb = new Zend_Log_Writer_Db($db, 'error_logging', $columnMapping);
$logger = new Zend_Log($writerDb);

$logger->setEventItem('datetime',date('Ymd H:i:s'));
$logger->setEventItem('user_agent',$_SERVER['HTTP_USER_AGENT']);
$logger->setEventItem('get_vars',print_r($_GET,true));
$logger->setEventItem('post_vars',print_r($_POST,true));
$logger->setEventItem('site',SITE);

$logger->info('Informational message');

Where the array keys in $columnMapping are my column names. 'Priority' and 'message' are understood by Zend_Log_Writers but the additional fields were added to give me some additional information.

Obviously this assumes that you have logging working using one of the other writers first :)













Panorama Theme theo Themocracy

6 khách truy cập trực tuyến tại
4 guests, 2 bots, 0 members
Max khách truy cập hôm nay: 23 lúc 07:18 am UTC
Tháng này: 26 2012/04/04 10:27 pm UTC
Năm nay: 69 27-02-2012 09:56 am UTC
Tất cả thời gian: 130 28-03-2011 10:40 pm UTC