mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 01:01:41 +09:00
210 lines
7.8 KiB
HTML
210 lines
7.8 KiB
HTML
<config autoescape="on" />
|
|
|
|
<include target="config_header.html" />
|
|
<load target="css/queue_config.scss" />
|
|
<load target="js/queue_config.js" />
|
|
|
|
<div class="message">
|
|
<p>{$lang->cmd_queue_description}</p>
|
|
</div>
|
|
|
|
<div cond="!empty($XE_VALIDATOR_MESSAGE) && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_queue/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
|
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
var queue_drivers = {json_encode($queue_drivers)|noescape};
|
|
</script>
|
|
|
|
<form action="./" method="post" class="x_form-horizontal">
|
|
<input type="hidden" name="module" value="admin" />
|
|
<input type="hidden" name="act" value="procAdminUpdateQueue" />
|
|
<input type="hidden" name="xe_validator_id" value="modules/admin/tpl/config_queue/1" />
|
|
|
|
<section class="section">
|
|
|
|
<h2>{$lang->subtitle_queue}</h2>
|
|
|
|
<div class="x_control-group">
|
|
<label class="x_control-label">{$lang->cmd_queue_enabled}</label>
|
|
<div class="x_controls">
|
|
<label for="queue_enabled" class="x_inline">
|
|
<input type="checkbox" name="queue_enabled" id="queue_enabled" value="Y" checked="checked"|cond="config('queue.enabled')" />
|
|
{$lang->cmd_queue_enabled}
|
|
</label>
|
|
<br>
|
|
<p class="x_help-block">{$lang->cmd_queue_enabled_help}</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="x_control-group">
|
|
<label class="x_control-label" for="queue_driver">{$lang->cmd_queue_driver}</label>
|
|
<div class="x_controls">
|
|
<select name="queue_driver" id="queue_driver">
|
|
<!--@foreach($queue_drivers as $driver_name => $driver_definition)-->
|
|
<option value="{$driver_name}" selected="selected"|cond="$queue_driver === $driver_name">{$driver_name === 'dummy' ? $lang->notuse : $driver_definition['name']}</option>
|
|
<!--@end-->
|
|
</select>
|
|
<p class="x_help-block">{$lang->cmd_queue_driver_help}</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!--@foreach($queue_drivers as $driver_name => $driver_definition)-->
|
|
|
|
{@ $conf_names = array_merge($driver_definition['required'], $driver_definition['optional'])}
|
|
|
|
<!--@foreach($conf_names as $conf_name)-->
|
|
|
|
{@ $conf_value = escape(config("queue.$driver_name.$conf_name"))}
|
|
{@ $text_keys = ['host', 'user']}
|
|
{@ $number_keys = ['port', 'dbnum']}
|
|
{@ $password_keys = ['pass']}
|
|
|
|
<!--@if(in_array($conf_name, $text_keys))-->
|
|
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
|
|
<label class="x_control-label" for="queue_{$driver_name}_{$conf_name}">{$lang->cmd_queue_config_keys[$conf_name]}</label>
|
|
<div class="x_controls">
|
|
<input type="text" name="queue_{$driver_name}_{$conf_name}" id="queue_{$driver_name}_{$conf_name}" value="{$conf_value}" />
|
|
</div>
|
|
</div>
|
|
<!--@end-->
|
|
|
|
<!--@if(in_array($conf_name, $number_keys))-->
|
|
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
|
|
<label class="x_control-label" for="queue_{$driver_name}_{$conf_name}">{$lang->cmd_queue_config_keys[$conf_name]}</label>
|
|
<div class="x_controls">
|
|
<input type="number" name="queue_{$driver_name}_{$conf_name}" id="queue_{$driver_name}_{$conf_name}" value="{$conf_value}" />
|
|
</div>
|
|
</div>
|
|
<!--@end-->
|
|
|
|
<!--@if(in_array($conf_name, $password_keys))-->
|
|
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
|
|
<label class="x_control-label" for="queue_{$driver_name}_{$conf_name}">{$lang->cmd_queue_config_keys[$conf_name]}</label>
|
|
<div class="x_controls">
|
|
<input type="password" name="queue_{$driver_name}_{$conf_name}" id="queue_{$driver_name}_{$conf_name}" value="{$conf_value}" autocomplete="new-password" />
|
|
</div>
|
|
</div>
|
|
<!--@end-->
|
|
|
|
<!--@end-->
|
|
|
|
<!--@end-->
|
|
|
|
</section>
|
|
|
|
<section>
|
|
|
|
<h2>{$lang->cmd_queue_call_script}</h2>
|
|
|
|
<div class="queue-script-setup">
|
|
<ul class="qss-tabs x_nav x_nav-tabs">
|
|
<li class="x_active"><a href="#" data-value="crontab">crontab</a></li>
|
|
<li><a href="#" data-value="webcron">webcron</a></li>
|
|
<li><a href="#" data-value="systemd-timer">systemd timer</a></li>
|
|
</ul>
|
|
<div class="qss-content crontab active">
|
|
{@
|
|
if (function_exists('posix_getpwuid') && function_exists('posix_getuid')):
|
|
$user_info = posix_getpwuid(posix_getuid());
|
|
if (!empty($user_info['dir'])):
|
|
$user_info['dir'] .= DIRECTORY_SEPARATOR;
|
|
endif;
|
|
else:
|
|
$user_info = [];
|
|
$user_info['name'] = $lang->msg_queue_instructions['same_as_php'];
|
|
endif;
|
|
}
|
|
<p class="qss-instruction">
|
|
{sprintf($lang->msg_queue_instructions['crontab1'], $user_info['name'] ?? 'PHP', $user_info['name'] ?? 'PHP')|noescape}
|
|
</p>
|
|
<pre><code>* * * * * /usr/bin/php {\RX_BASEDIR}index.php common.cron >> {$user_info['dir']}logs{\DIRECTORY_SEPARATOR}queue.log 2>&1</code></pre>
|
|
<p class="qss-instruction">
|
|
{sprintf($lang->msg_queue_instructions['crontab2'], $user_info['dir'] . 'logs')|noescape}
|
|
</p>
|
|
</div>
|
|
<div class="qss-content webcron">
|
|
<p class="qss-instruction">
|
|
{$lang->msg_queue_instructions['webcron']|noescape}
|
|
</p>
|
|
<pre><code class="webcron-url">{getFullUrl('')}common/scripts/cron.php?key={config('queue.key')}</code></pre>
|
|
</div>
|
|
<div class="qss-content systemd-timer">
|
|
<p class="qss-instruction">
|
|
{$lang->msg_queue_instructions['systemd1']|noescape}
|
|
</p>
|
|
<pre><code>[Unit]
|
|
Description=Rhymix Queue Service
|
|
|
|
[Service]
|
|
ExecStart=/usr/bin/php {\RX_BASEDIR}index.php common.cron
|
|
User={$user_info['name']}</code></pre>
|
|
<p class="qss-instruction">
|
|
{$lang->msg_queue_instructions['systemd2']|noescape}
|
|
</p>
|
|
<pre><code>[Unit]
|
|
Description=Rhymix Queue Timer
|
|
|
|
[Timer]
|
|
OnCalendar=*-*-* *:*:00
|
|
Unit=rhymix-queue.service
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target</code></pre>
|
|
<p class="qss-instruction">
|
|
{$lang->msg_queue_instructions['systemd3']|noescape}
|
|
</p>
|
|
<pre><code>systemctl daemon-reload
|
|
systemctl start rhymix-queue.timer
|
|
systemctl enable rhymix-queue.timer</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="x_control-group">
|
|
<label class="x_control-label" for="queue_key">{$lang->cmd_queue_webcron_key}</label>
|
|
<div class="x_controls">
|
|
<input type="text" class="x_full-width" name="queue_key" id="queue_key" value="{config('queue.key')}" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="x_control-group">
|
|
<label class="x_control-label">{$lang->cmd_queue_webcron_display_errors}</label>
|
|
<div class="x_controls">
|
|
<label class="x_inline">
|
|
<input type="radio" name="webcron_display_errors" value="Y" checked="checked"|cond="config('queue.display_errors') !== false" />
|
|
{$lang->cmd_yes}
|
|
</label>
|
|
<label class="x_inline">
|
|
<input type="radio" name="webcron_display_errors" value="N" checked="checked"|cond="config('queue.display_errors') === false" />
|
|
{$lang->cmd_no}
|
|
</label>
|
|
<p class="x_help-block">{$lang->cmd_queue_webcron_display_errors_help}</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="x_control-group">
|
|
<label class="x_control-label" for="queue_interval">{$lang->cmd_queue_interval}</label>
|
|
<div class="x_controls">
|
|
<input type="number" name="queue_interval" id="queue_interval" min="1" max="10" value="{config('queue.interval') ?: 1}" />
|
|
<span class="x_inline">{$lang->unit_min}</span>
|
|
<br>
|
|
<p class="x_help-block" style="margin-top:10px">{sprintf($lang->cmd_queue_interval_help, ini_get('max_execution_time'))|noescape}</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="x_control-group">
|
|
<label class="x_control-label" for="queue_process_count">{$lang->cmd_queue_process_count}</label>
|
|
<div class="x_controls">
|
|
<input type="number" name="queue_process_count" id="queue_process_count" min="1" max="10" value="{config('queue.process_count') ?: 1}" />
|
|
<p class="x_help-block">{$lang->cmd_queue_process_count_help}</p>
|
|
</div>
|
|
</div>
|
|
|
|
</section>
|
|
|
|
<div class="x_clearfix btnArea">
|
|
<div class="x_pull-right">
|
|
<button type="submit" class="x_btn x_btn-primary">{$lang->cmd_save}</button>
|
|
</div>
|
|
</div>
|
|
</form>
|