Отсюда возникает первый вопрос - как лучше записывать эти категории - в один столбик, или для каждой категории сделать отдельный?таблица связей ид_проекта-ид_категории. Читать про отношения один-ко-многим и многие-ко-многим.
Фотографию категорий я не хочу записывать в базу.Почему? Лень? Религия? Звезды не сошлись?
Поэтому вопрос - как это лучше всего реализовать?Хранить имя картинки в бд, если это одна картинка - можно прямо в таблице категории. Путь до картинок категорий вынести в константу например.
version: '2'
services:
nginx:
build: ./docker/nginx
ports:
- "80:80"
links:
- php
volumes:
- ./docker/nginx/http.conf:/etc/nginx/conf.d/http.conf
- ./docker/nginx/site.conf:/etc/nginx/sites-enabled/site.conf
volumes_from:
- php
command: 'nginx -g "daemon off;"'
php:
build: ./docker/php
volumes:
- .:/src
- ./docker/php/php-cli.ini:/etc/php/7.0/cli/conf.d/php-cli.ini
- ./docker/php/php-fpm.ini:/etc/php/7.0/fpm/conf.d/php-fpm.ini
- ./docker/php/pool.conf:/etc/php/7.0/fpm/pool.d/www.conf
command: 'php-fpm7.0 -F'
links:
- db
- cache
environment:
SYMFONY__DB__DRIVER: pdo_pgsql
SYMFONY__DB__HOST: db
SYMFONY__DB__PORT: 5432
SYMFONY__DB__NAME: dbname
SYMFONY__DB__USER: dbuser
SYMFONY__DB__PASSWORD: dbpassword
db:
image: "postgres:latest"
environment:
POSTGRES_DB: dbname
POSTGRES_USER: dbuser
POSTGRES_PASSWORD: dbpassword
cache:
image: "redis:latest"
command: redis-server --appendonly yes
FROM ubuntu:16.04
RUN apt-get update \
&& apt-get install -y nginx
access_log /dev/stdout;
error_log /dev/stderr;
server {
listen 80;
server_name example.dev;
root /src/web;
index index.php index.html;
location / {
try_files $uri /app_dev.php$is_args$args;
}
location ~ ^/(app_dev|config)\.php(/|$) {
include fastcgi.conf;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
location ~ \.php$ {
return 404;
}
}
FROM ubuntu:16.04
ENV PHP_PACKAGES \
php7.0-fpm \
php7.0-cli \
php7.0-readline \
php7.0-pgsql \
php7.0-mcrypt \
php7.0-xml
RUN apt-get update \
&& apt-get install -y $PHP_PACKAGES
RUN usermod -u 1000 www-data
error_reporting = -1
display_errors = On
log_errors = Off
html_errors = Off
error_reporting = -1
display_errors = On
log_errors = Off
html_errors = On
cgi.fix_pathinfo = 0
pid = /var/run/php.pid
[www]
user = www-data
group = www-data
listen = 0.0.0.0:9000
pm = dynamic
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
clear_env = no
catch_workers_output = yes
docker cp file.sql.gz containername:/tmp/dump.sql.gz
docker exec -ti containername bash
gunzip -c /tmp/dump.sql.gz | psql -U username dbname
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//img[contains(@class, "popup-img")]');
foreach($nodes as $node) {
$a = $dom->createElement('a');
$a->setAttribute('class', $node->getAttribute("class"));
$a->setAttribute('title', $node->getAttribute("alt"));
$href = parse_url($node->getAttribute("src"), PHP_URL_PATH);
$a->setAttribute('href', '..' . str_replace('/thumbs/100/', '/', $href));
$a->setAttribute('style', "background: url('..$href'); -webkit-background-size:cover; background-size:cover;");
$node->parentNode->insertBefore($a, $node);
$node->parentNode->removeChild($node);
}
echo $dom->saveHTML();
Base table or view not found: 1146 Table 'visualstudy.post_every_day_post_every_day_tag'
Schema::create('post_everyday_conect_to_tags',
'App\PostEveryDayTag'
'App\PostEveryDay'
<?php
$opts = array(
'socket' => array(
'bindto' => '10.10.1.1:0',
)
);
$context = stream_context_create($opts);
$file = file_get_contents("https://site.com/", false, $context);
<?php
$auth = base64_encode('LOGIN:PASSWORD');
$aContext = array(
'http' => array(
'proxy' => 'tcp://192.168.0.2:3128',
'request_fulluri' => true,
'header' => "Proxy-Authorization: Basic $auth",
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("http://www.google.com", False, $cxContext);
echo $sFile;
как сделать так чтобы они вызывались только когда нужно не знаютак как у вас это "такой себе" чат - сильно что-то исправить не получится, для этого нужно переписать как серверный, так и браузерный код, используя сокеты или хотя бы лонг поллинг.