Здравствуйте, есть код динамической шапки в вк. "Самый активный" висит на шапке ровно сутки, благодаря этой строчке:
if (date('Ymd') == date('Ymd', $wall['date']))
Но мне хотелось бы, чтобы пользователь держался на шапке одну неделю. Набросал такой код:
$date = new DateTime ('Y.m.d'); //Сегодняшняя дата
$date -> modify ('+7 day'); //Интервал
if ($date == date('Ymd', $wall['date'])) {
//обновляем пользователя на шапке
}
Но, такой код вызывает пятисотую ошибку (юзаю хост т.к пока нет доступа к локалке). Все, что не есть метод "DateTime" (format, modify, setTime и т.д.) вызывает такую же ошибку. Вроде ошибок в этих строчках нет, но работает только при их отсутствии. Как еще можно подойти к решению данной проблемы?
P.S программирую очень мало, поэтому просьба сильно не пинать))
Подправил, но пока не работает (все та же ошибка 500).
Вот весь блок кода с моими измениями (может это, что-то прояснит):
if($liker_enable) {
$wall_get = $vk->api('wall.get', array(
'count' => 50,
'owner_id' => '-' . $group_id,
'extended' => '1'
));
$bestliker = array();
$date = new DateTime ('Y.m.d'); //Сегодняшняя дата
$date -> modify ('+7 day'); //Интервал
foreach ($wall_get['response']['items'] as $wall) {
$likes_count = $wall['likes']['count'];
if ($date < date('Ymd', $wall['date'])) {
if ($likes_count > 0) {
$likesGet = $vk->api('execute.likesList', array('owner_id' => $group_id, 'item_id' => $wall['id'], 'filter' => 'likes'));
foreach ($likesGet['response'][0]['items'] as $l) {
if ($l['id'] > 0) {
if (!isset($bestliker[$l['id']])) {
$bestliker[$l['id']] = 1;
} else {
$bestliker[$l['id']]++;
Вообще если 500 - лучше:
- смотреть логи
- протетисровать на локалке и посмотреть логи
- включить на локалке вывод ошибок и посмотреть что падает (или на крайней случай включить на сервере - но не забыть выключить)
Alex McArrow, Вот, это вроде бы и есть нужный кусок логов:
[Thu Jan 18 15:12:03 2018] [error] [client 91.227.16.114] PHP Fatal error: Uncaught Exception: DateTime::__construct(): Failed to parse time string (Y.m.d) at position 4 (d): Double timezone specification in /home/h122562/data/www/h122562.s04.test-hf.ru/cron.php:62
[Thu Jan 18 15:12:03 2018] [error] [client 91.227.16.114] Stack trace:
[Thu Jan 18 15:12:03 2018] [error] [client 91.227.16.114] #0 /home/h122562/data/www/h122562.s04.test-hf.ru/cron.php(62): DateTime->__construct('Y.m.d')
alihang, если я правильно понял ошибку - то проблема в некорректном преобразовании даты if ($date < date('Ymd', $wall['date'])) {
попробуйте if ($date < date('Y-m-d', $wall['date'])) {
а может поможем