Как скачать содержимое сайта в файл (PHP)
Код для скачивания html страницы в файл:
file_put_contents("test.html", fopen("https://sitename.ru", 'r'));
где test.html - название сохраняемого файла, https://sitename.ru - URL страницы
Код для скачивания html страницы в файл:
file_put_contents("test.html", fopen("https://sitename.ru", 'r'));
где test.html - название сохраняемого файла, https://sitename.ru - URL страницы
Чем заменить SQL_CALC_FOUND_ROWS?
С применением SQL_CALC_FOUND_ROWS код выглядит примерно так:
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE quantity > 50 LIMIT 30;
SELECT FOUND_ROWS();
Этот же код без SQL_CALC_FOUND_ROWS:
SELECT * FROM table WHERE quantity > 50 LIMIT 30;
SELECT COUNT(*) FROM table WHERE quantity > 50;
Смысл в том, что сначала делается запрос с лимитом, а затем - COUNT(*), но уже без ограничений.
Команда, с помощью можно получить суммарный размер папки по SSH:
du -sh folderName
где folderName - название папки, размер которой необходимо посчитать.
Допустим, есть переменная $timestamp в которой содержится timestamp какой-то даты.
Есть несколько способов, как получить DateTime.
Самые простые:
//1:
$dateTime = new DateTime('@' . $timestamp);
//2:
$dateTime = DateTime::createFromFormat('U', $timestamp);
Во время использования тестов Laravel Dusk иногда полезно глазами посмотреть, что происходит в браузере. Сделать это достаточно просто.
Достаточно закомментировать режим '--headless'. Для стандартного тестового случая это находится по адресу:
\Tests\DuskTestCase::driver
Пример:
$options = (new ChromeOptions)->addArguments(collect([
$this->shouldStartMaximized() ? '--start-maximized' : '--window-size=1920,1080',
])->unless($this->hasHeadlessDisabled(), function ($items) {
return $items->merge([
'--disable-gpu',
// '--headless',
]);
})->all());
Если вы пробуете сделать запрос в таком виде:
SELECT name:en
FROM planet_osm_polygon poly
WHERE …
И получаете такую ошибку:
ERROR: syntax error at or near ":"
То решить ее достаточно просто, достаточно заключить проблемное название колонки в двойные кавычки:
SELECT "name:en"
FROM planet_osm_polygon poly
WHERE …
Все просто, достаточно одной строчки кода:
$monthStart = new DateTime("first day of last month");
Пример, как сделать doubleClick мышью при помощи Selenium в PHP:
$action = new WebDriverActions($driver);
$element = $driver->findElement(WebDriverBy::cssSelector('.testClass'));
$action->doubleClick($element)->perform();
Чтобы получить данные от выполненного js скрипта в selenium достаточно такого кода:
$js =' return "test";';
$res = $client->executeScript($js);
var_dump($res);
Если при применении плагина по контролю за видимостью колонок надо узнать, какие колонки у пользователя видны, а какие- нет, можно воспользоваться этим кодом:
var myTable = $('.table').DataTable(datatableParams);
//...
var info = myTable.columns().visible();
console.log(info);
где datatableParams - параметры инициализации DataTable
К примеру есть такой CSS с media query:
@media all and (max-width: 850px) {
#myblock{
background: #ff0000;
}
}
И если он правильно подключен к странице, но вдруг не работает, то проверьте, есть ли в html страницы такой код:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Допустим есть класс Test
У него есть такое отношение:
public function items()
{
return $this->belongsToMany(Item::class, 'test_type_connection', 'test_id', 'item_id');
}
Сама привязка:
$test = Test::find(24);
$item = Item::find(12);
$test->items()->save($item);
При условии, что на странице DataTable в единственном экземпляре:
$('.mydatatable').on( 'init.dt', function () {
console.log( $.fn.dataTable.tables()[0].id );
} );
На самом деле используя $.fn.dataTable.tables() можно пройтись по всем DataTable, инициализированным на странице. Только это надо делать после полной загрузки страницы, в данном случае событие поставлено после завершения инициализации DataTable и мы уже знаем ее класс (поэтому практического смысла тут нет,просто приведено ради примера)
Иногда необходимо предпринять какие-либо действия, когда пользователь что-то фильтрует в DataTable.
С этим поможетакой код:
$('#myDatatable ').on( 'search.dt', function () {
//do something
} );
При myDatatable этом объявлен где-то ранее в коде:
new DataTable('#myDatatable');
Если необходимо сделать что-то после того, как DataTable будет инициализирован, то подойдет следующий код:
$('#myDatatable').on( 'init.dt', function () {
//do something
} );
При myDatatable этом объявлен где-то ранее в коде:
new DataTable('#myDatatable');
Если необходимо с помощью jQuery получить содержимое таблицы DataTables, при этом убрав все отфильтрованное, это можно сделать следующим образом:
var table = $('.dataTable').DataTable();
var rows = table.rows( { search:'applied'} ).data();
console.log(rows); // результат
Допустим есть класс Test
У него есть отношение:
public function types()
{
return $this->belongsToMany(TestType::class, 'test_type_connection', 'test_id', 'type_id');
}
Теперь проверим, есть ли у объекта Test тип с type_id = 1:
$test = Test::find(67);
$exists = $test->types->contains(1);
var_dump($exists);
Эта ошибка значит, что на текстовое поле (или на поле с типом BLOB) необходимо при добавлении индекса указать размер, сколько необходимо индексировать.
Пример:
ALTER TABLE `test`
ADD INDEX `test1` (`text_field`(50), `other_field`);
В данном случае (50) - указание размера.
Если укажете слишком большой размер - рискуете получить другую ошибку - “Specified key was too long; max key length is 1000 bytes”.
Иногда необходимо убрать автофокус с первого элемента формы, к примеру во всплываюшем окне (или в любом другом месте).
Сделать это просто.
Достаточно просто добавить такой скрытый элемент:
<input type="hidden" autofocus="true" />
Запрос:
SELECT * FROM INFORMATION_ SCHEMA.TABLES WHERE engine = 'MyISAM';
примечание: удалите в запросе пробел перед SCHEMA