【发布时间】:2020-05-06 22:32:29
【问题描述】:
我有一个 PHP 脚本,可以将 SQL 表中的数据导出到 Drupal 内容中。我想将作业安排为 Windows 任务并按照以下步骤操作:
- 我的 PHP 文件包含以下代码:
<?php
namespace Drupal\Import\Commands;
use Drush\Commands\DrushCommands;
use Drupal\node\Entity\Node;
class ImportCommands extends DrushCommands
{
public function loadData()
{
$tx = \Drupal::database()->startTransaction();
try
{
$query_result = \Drupal::entityQuery('node')
->condition('type', 'test_mod')
->execute();
entity_delete_multiple('node', $query_result);
$database = \Drupal::database();
$result = $database->query("SELECT * FROM my_sql_table");
$records = $result->fetchAll();
foreach($records as $key => $record) {
$node = Node::create(['type' => 'test_mod']);
$node->set('title', $key);
$node->set('field_IDVal', $record->ID);
$node->set('field_name', $record->Name);
$node->status = 1;
$node->enforceIsNew();
$node->save();
}
}
catch (Exception $e) {
$tx->rollBack();
// log/report failure
}
// $tx->commit();
}
}
- 已创建 .bat 文件并具有以下查询:
调用 C:\MyProj\web\Commands\php.exe -f C:\MyProj\web\Commands\ExportCommands.php
- 创建了一个 Windows 任务来链接这个文件。
我看到的只是任务成功的 0x1。有什么帮助可以完成这项工作吗?!
预期行为:我想创建一个调用此 PHP 的 wndows 任务,并且文件中的命令将数据从 SQL 表加载到 Drupal。
现在我通过命令提示符执行文件并执行:drush MyProj:loaddata
有什么帮助吗?!
【问题讨论】:
-
您的
php.exe文件位于C:\MyProj\web\Commands\php.exe? -
我将它移到我的项目文件夹中,以便与我的 PHP 文件保持一致。原来它属于Program Files
-
call命令用于批处理文件,因此当嵌套的批处理文件完成时,它包含在简历中的那个文件会恢复。可能您在可执行文件(php.exe)上使用call是问题所在。或者是什么掩盖了结果。 ....docs.microsoft.com/en-us/windows-server/administration/…
标签: php windows drupal scheduled-tasks