function randomDelay(min = 250, max = 750) {
return new Promise((resolve) => {
const ms = Math.random() * (max - min) + min;
setTimeout(resolve, ms);
});
}
function downloadAll(urls, limit = 4) {
return new Promise((resolveAll, rejectAll) => {
const result = [];
const iter = urls.entries();
let fulfilled = 0;
const next = () => {
const { done, value } = iter.next();
if (done) {
if (fulfilled === urls.length) {
resolveAll(result);
return;
}
return;
}
const [index, url] = value;
const onFulfilled = (val) => {
result[index] = val;
fulfilled += 1;
next();
};
randomDelay()
.then(() => fetch(url))
.then(onFulfilled, rejectAll);
};
for (let i = 0, l = Math.min(limit, urls.length); i < l; i++) {
next();
}
});
}
const urls = Array.from(
{ length: 100 },
(_, i) => `https://jsonplaceholder.typicode.com/todos/${i + 1}`
);
(async () => {
const responses = await downloadAll(urls, 2);
const data = await Promise.all(responses.map((r) => r.json()));
console.log(data);
})();
const N = 3;
const delay = ms => new Promise(res => setTimeout(res, ms));
const next = () => {
if (items.length > 0) {
return download(items.shift())
.then(delay(500 + Math.floor(Math.random() * 500))) // случайная пауза между закачками
.then(next);
}
};
const works = Array.from({ length: N }, () =>
Promise.resolve()
.then(next)
.catch(console.error)
);
Promise.all(works).then(() => console.log('All Done'));
'use strict';
const Bluebird = require('bluebird');
/* Тут какой-то Ваш код */
Bluebird.map(items, async function(url) {
try {
const response = await fetch(url);
if (response.status === 200) {
const buffer = await response.buffer();
/* Что-то делаете с буффером */
}
await Bluebird.delay(1000); // Можно добавить задержку после каждого успешного запроса
} catch(err) {
console.error(err);
}
}, {
concurrency: 3 // Указываете во сколько потоков выполнять запросы
}).catch(console.error);
element?.getContext('2d');
element ? element.getContext('2d') : null
if(element && element.getContext) {
//code
}
factory(Team::class, 3)->create()->each(function($team) {
$team->users()->saveMany(factory(Users::class, 5)->make());
});
// Roles
$admin_ids = collect(range(1, Users::count()))->random(5)->toArray();
Users::whereIn('id', $admin_ids)->update(['role' => 1]);
<title> Велосипеды хардтейл красные</title>
<description>Велосипеды хардтейл с переключателями Shimano красные купить в Урюпинске ул. Николая-2, д. 3 - работаем без выходных с 6:00 до 23:00</description>
Вопрос:С точки зрения логики, безопасности, здравого смысла и ряда прочих факторов, включая архитектурные особенности (по части хранения таблиц в рамках файловой системы) самих БД - я хранил подобные данные в разных БД. Но, с учётом того, что "сотня тысяч" строк, это по большому счёту "пшик" и база уровня "шаред-хостинг" (думаю, ещё даже не VPS) - то для удобства можно хранить всё это и в одной базе.
Какую архитектуру базы данных создать, под каждый сайт отдельные таблицы или отдельную базу данных под каждый мгаазин или сотни тысяч товаров в одной держать. Кто работал с конструторами сайтов, какая у них база данных под каждого клиента. И стоит ли вообще использовать mysql или стоит рассмотреть другого вариант? Как бы вы построили базу данных, если бы таких магазинов было 100 и более.