it-swarm-ko.tech

서두 스크립팅? 아니면 배치 API?

Ubercart 웹 사이트에는 매일 대량의 주문을 처리하고 처리하며 청구, 배송 라우팅 및 향후 주문 생성과 같은 다른 작업을 실행합니다.

이러한 작업 중 일부는 무겁고 때로는 PHP 시간 초과를 유발합니다. Drush 또는 Batch API를 통해 이러한 작업을 실행하는 더 좋은 방법이 있습니까?

속도는 반드시 우선 순위는 아니지만 (Nice는 아니지만) 시간 초과를 피하고 싶을 때가 있습니다. 이로 인해 때때로 정확한 청구 및 일일 주문 예약에 문제가 발생할 수 있습니다.

Drush 스크립트가 더 나은 옵션입니까, 아니면 Batch API입니까? 두 가지를 더 잘 활용하기위한 튜토리얼이 있습니까?

8
Kevin

배치 작업이 브라우저에 의존한다는 사실 때문에 배치 API를 사용하지 않는 것이 좋습니다. 어떤 이유로 든 브라우저가 충돌하거나 서버와의 연결이 끊어지면 배치 작업이 종료되지 않거나 중단됩니다. 실제로 PHP 시간 초과를 피하기 위해 배치 작업으로 인해 브라우저가 간격으로 배치 페이지를 핑 (Ping)합니다. 이는 JavaScript 코드가 관련 될 때마다 발생합니다. Drupal 새로 고침 메타 태그를 사용합니다).

이 경우 Drush가 더 나은 선택 일 것입니다. 특정 Drush 명령을 구현하는 사용자 지정 모듈을 만들거나 Drush가 해당 명령에 사용하는 디렉토리에 명령 파일을 추가하기 만하면됩니다.

13
kiamlaluno

또한 custom PHP CLI 스크립트를 사용할 수 있습니다. 다음은 drupal 7의 간단한 예입니다.)

#!/usr/bin/php
<?php
echo "Ubercart tasks\n===================\n";

$_SERVER['HTTP_Host']       = 'default';
$_SERVER['PHP_SELF']        = '/index.php';
$_SERVER['REMOTE_ADDR']     = '127.0.0.1';
$_SERVER['SERVER_SOFTWARE'] = NULL;
$_SERVER['REQUEST_METHOD']  = 'GET';
$_SERVER['QUERY_STRING']    = '';
$_SERVER['PHP_SELF']        = $_SERVER['REQUEST_URI'] = '/';
$_SERVER['HTTP_USER_AGENT'] = 'console';

define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//-------------------------------------------

// Place your code here
2
ya.teck

'자동 생성 된 디지털 제품'에 대한 상당한 백엔드 처리가 필요한 D6 Ubercart 사이트가 있습니다. 나는 이것을 통해 이것을 처리한다 :

  1. 이러한 사용자 지정 디지털 제품 중 하나를 구매하면 '컴파일해야하는 제품'에 대한 db 테이블 항목이 생성됩니다. 해당 db 항목은 '상태'필드입니다.
  2. BASH 스크립트는 백그라운드에서 실행되는 Drupal 내에서 시작됩니다.이 스크립트는 '재진입'입니다. 즉, 스크립트는 실행 중 호출되는 것을 인식하고 기존 작업에 새 작업을 추가합니다. 아직 완료되지 않았습니다.
  3. 이 BASH 스크립트는 사용자 정의 디지털 제품이 작성 될 때 Drupal 데이터베이스의 '상태'필드를 증가시키고, 최종 사용자 정의 제품에 대한 다운로드 링크와 함께 이메일 알림이 사용자에게 발송됩니다.

이것은 PHP CLI 스크립트를 사용하지 않지만 PHP에 의해 호출되는 BASH 스크립트)를 제외하고는 Xio가 제안한 것과 다소 유사한 솔루션입니다. in Drupal in 백그라운드에서 실행합니다. 해당 BASH 스크립트는 Drupal 데이터베이스에 액세스하여 컴파일하고 고객에게 보내는 모든 제품의 '상태'값을 향상시킵니다.) 또한, Drupal는 이러한 상태 값을보고 '맞춤 제작 과정'에서 구매가 현재 진행중인 고객에게 다시보고 할 수 있습니다.

1
Blake Senftner