(я использую MAMP) без него, вместо желаемого результата на странице появляется весь код PHP,Ну. конечно будет появляться исходный код, ибо интерпретатора нет и никто исходники не обрабатывает.
когда подключается PHP код выходит ошибка (не находит страницу)
"showMessage": "Запись 45 успешно удалена",
"rowAction": "remove",
"rowId": 45
"showMessage": "Запись добавлена под номером 46",
"formHtml": "<div>пустая форма с кнопкой добавить</div>"
"rowAction": "insert",
"rowHtml": "<tr data-id=46><td>46<td>это коммент записи 46...</tr>"
"showMessage": "Упс, комментарий слишком короткий",
"formHtml": "<div>форма с заполненными полями и кнопками добавить/отменить</div>"
"showMessage": "Запись 44 изменена",
"formHtml": "<div>пустая форма с кнопкой добавить</div>"
"rowAction": "replace",
"rowId": 44,
"rowHtml": "<tr data-id=44><td>44<td>это новый коммент записи 44...</tr>"
$('body').on('click', '[data-ctrl]'m function(){
const $t = $(this);
const action = $t.data('ctrl');
var ajaxData = {action: "Oops"};
if('remove' === action){
ajaxData.action = "remove";
ajaxData.rowId = $t.closest('tr[data-id]').data('id'); // кнопка удаления находится в строке данных
}
...
})
$.ajax({
...
data: ajaxData,
success: function(data){
if("remove" === data.rowAction){
...
}
}
)
<?php
header('Content-type: text/plain');
?>31 Декабря с 8:00 до 17:00
1 Января выходной день
Со 2 января по 8 Января 10:00 до 23:00
9 Января с 11:00 до 23:00
<?
$dtList = [
['12/31', '12/31', false, [['08:00', '17:00', true]]], // открыто
['01/01', '01/02', false, []], // закрыто (пустой диапазон времени)
['01/02', '01/08', false, [['10:00', '23:00', true]]],
['01/09', '01/09', false, [['11:00', '23:00', true]]],
['01/01', '12/31', true, [['06:00', '08:00', false]]],
];
$dt = new dt('2020-12-28');
$finish = (new dt('2021-01-14'))->getTimestamp();
do {
$res = false;
foreach ($dtList as [$a1, $b1, $def, $subList]) {
$a1 = $dt->_clone($a1);
$b1 = $dt->_clone($b1);
if (h::testTimeRange($dt, $a1, $b1)) {
foreach($subList as [$a2, $b2, $c2]){
$a2 = $dt->_clone($a2);
$b2 = $dt->_clone($b2);
if (h::testTimeRange($dt, $a2, $b2)) {
$res = $c2;
break 2; // выход с обоих циклов
}
}
$res = $def; // первый уровень сработал, а второй не имеет подх. диапазона, значит значение по умолчанию для перв. уровня
break;
}
}
echo "\n ", $dt->format(), $res ? ' open' : ' close';
$dt->modify('+'.rand(1, 1).' hour');
} while ($dt->getTimestamp() < $finish);
<?php
class dt extends DateTime{
/** Формат отображения даты-времени по умолчанию в игре */
const F_DEFAULT = 'd.m.Y H:i';
/**
* Создает
*
* @param mixed $time
* @param DateTimeZone $timezone
*/
public static function createRand($time = null, DateTimeZone $timezone = null){
$time = preg_replace_callback('@/(\d+)-(\d+)/@', function($m){
return (string)h::rand($m[1], $m[2]);
}, $time);
return new self($time, $timezone);
}
/**
* $time допускает указание нескольких доп. параметров для modify() через разделитель |
*
* @param mixed $time
* @param DateTimeZone $timezone
* @return DateTime
*/
public function __construct($time = null, DateTimeZone $timezone = null){
$time = explode('|', $time);
parent::__construct($time[0], $timezone);
while($s = next($time)){
$this->modify($s);
}
}
/**
* Вывод даты согласно формату
*
* @param string Мо умолчнию будет общепринятый в игре вариант F_DEFAULT
* @return string
*/
public function format($format = null){
return parent::format(is_null($format) ? self::F_DEFAULT : $format);
}
/**
* Клонирует текущий объект.
* @return dt
*/
public function _clone($modify = null){
$res = clone $this;
if(!is_null($modify)){
$res->modify($modify);
}
return $res;
}
public function __toString(){
return $this->format();
}
}
public static function execAsDeamon($script,$params = null){
$tmp = '';
foreach((array)$params as $k=>$v){
if(empty($k)){
continue;
}
$tmp .= ' -'.$k.'='.$v;
}
$tmp = g::options('core.php-cli-starter', 'php').' '.$script.' '.srv::$HOST_TYPE.$tmp.' > /dev/null &';
exec($tmp);
}
Как сделать, чтоб он не добавлял новые результаты после старых результатов, а полностью перезаписывал файл: socks5_valid.txt новыми результатами ?
Нужно сделать просто: взять ID из TAB1, сделать JOIN с TAB2, и вывести по порядку ID, LOCAT и DATE, но отсортировав по DATE - интересны только последние даты (свежие)
select
t1.id, t1.raw, t2.date, t2.locat
from ( -- формируем промежуточный набор данных с id+date подходящих записей
select a2.id, max(a2.date) date
from tab2 a2
join tab1 a1 on a2.id = a1.id -- этот джоин ограничивает множество a2, чтобы не группировать лишние записи
group by a1.id, a1.date
) n
join tab1 t1 on t1.id = n.id
join tab2 t2 on t2.id = n.id and t2.date = n.date -- теперь в джоине участвует два поля, чтобы точно указать на запись, которая нам нужна
$str = 'mail_info_10999781={"count":4,"lastPostId":"442384768","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1586381539,"countNew":"4"}; mail_info_4180878=[]; mail_info_2329300=[]; mail_info_10982672=[]; mail_info_10524789={"count":3,"lastPostId":"444114528","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587504640,"countNew":"3"}; mail_info_9061283={"count":3,"lastPostId":"444114548","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587504666,"countNew":"3"}; mail_info_4767868=[]; mail_info_2307930=[]; mail_info_3713915={"count":4,"lastPostId":"444115078","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587505121,"countNew":"4"}; mail_info_11019215=[]; uidc=75e9f7984b904a; mail_info_7521919={"count":3,"lastPostId":"444119300","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587509668,"countNew":"3"}; mail_info_5249555={"count":3,"lastPostId":"444119305","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587509682,"countNew":"3"}; mail_info_9721044={"count":3,"lastPostId":"444119330","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587509739,"countNew":"3"}; mail_info_9200661={"count":1,"lastPostId":"444119783","playerId":"10978816","playerName":"Букая","text":"Перса верните","dateAdded":1587511049,"countNew":"1"}; mail_info_3775637=[]; mail_info_10950336=[]; mail_info_2728587=[]; mail_info_10799719={"count":4,"lastPostId":"444145953","playerId":"1","playerName":"Система","text":"За участие в Ту..","dateAdded":1587543962,"countNew":"4"}; mail_info_3782473={"count":4,"lastPostId":"444146002","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587543991,"countNew":"4"}; mail_info_8929282={"count":5,"lastPostId":"444146020","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587544010,"countNew":"5"}; mail_info_6872423={"count":4,"lastPostId":"444146071","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587544041,"countNew":"4"}; mail_info_10947584=[]; mail_info_5361529=[]; mail_info_11024570=[]; mail_info_10824306={"count":3,"lastPostId":"444149063","playerId":"1","playerName":"Система","text":"Вы покинули или..","dateAdded":1587546093,"countNew":"3"}; mail_info_9126714=[]; mail_info_9412550=[]; mail_info_8087106=[]; PHPSESSID=720e9a61f3ce5acf34e005ba0811a4e0.1587566959.5217338; mail_info_10209738=[]; lastSyncDate=1587568026488mrush.mobi';
if(preg_match('/PHPSESSID=(.+?);/', $str, $matches)){
echo $matches[1];
}else{
echo 'Oops';
}
Часто желательно, чтобы один файл или ресурс обрабатывал все запросы к конкретному каталогу, кроме тех запросов, которые соответствуют существующему файлу или сценарию. Это часто называют «фронтальным контроллером».
В более ранних версиях HTTPD, этот эффект , как правило , требуется mod_rewrite, и использование из -fи -dтестов для файлов и каталогов существования. Теперь для этого требуется только одна строка конфигурации.
FallbackResource / index . PHP
Существующие файлы, такие как изображения, файлы CSS и т. Д., Будут обслуживаться в обычном режиме.
Используйте disabledаргумент, чтобы отключить эту функцию, если наследование от родительского каталога нежелательно.
...
<Directory "$base/$proj/www/i">
FallbackResource disabled - в папке картинок отключаем обработчик
Header set Cache-Control "public, max-age=31536000"
</Directory>
<Directory "$base/$proj/www">
Options -Indexes
Require all granted
DirectoryIndex disabled
DirectorySlash Off
FallbackResource /entry.php
</Directory>
</Macro>