Выдаются две вышеописанные ошибки, очищается файл.
даже с заменой режима на W, происходит то же самое $a = fopen("last.txt", "w");
<?php$a = fopen("last.txt", "r");$b = fread("last.txt", filesize("last.txt"));$c = fwrite("last.txt", "$b++");?>
Такой код вызывает ошибки:
Warning: fread(): supplied argument is not a valid stream resource in W:\domains\localhost\script1.php on line 3Warning: fwrite(): supplied argument is not a valid stream resource in W:\domains\localhost\script1.php on line 4
Но в то же время, file_get_contents работает
Как я с этими правами на папки только не совокуплялся - все бестолку, стоит "Только чтение", но говорят, что для программ значения не имеет.
Возникла нужда в небольшом скрипте, который будет увеличивать значение переменной, каждый раз, когда к ней обращаются (точнее к файлу, где отображается ее значение).
В папке с самим скриптом лежит текстовый файл с именем last.txt, из переменной $a в него укладывается одна цифра, которая должна увеличиваться на 1, каждый раз, когда скрипт открывает этот файл (т.е. при обновлении страницы в браузере).
$a = 1;if ($opens = fopen("last.txt", "w")){ $an = fwrite($opens, $a + 1);}
Таким способом увеличить значение не получилось, но открыть файл и записать туда просто 1 (стартовое значение переменной $a) удалось. Очень прошу помощи, может быть, кто-то догадывается, как можно увеличивать значение переменной $a и заносить его в last.txt с каждым открытием (а лучше закрытием) этого файла?
Большое спасибо.
Точно также пробовал менять значение на $a++, не получалось.
P.S: пишу этот скрипт для дальнейшего использования в большем по объему скрипте. Потом файл сменю на БД.
Нанимать фрилансера нет желания, лучше самому попарится и опыта получить. И хотя часто сюда пишу, многое не получается, тем не менее все лучше делать самому. К тому же, кто не хочет - тот не отвечает.
По теме: если брать элементы массива по порядку рефрешом в php не получается, буду использовать крон, как советовали ранее.
Следующая проблема вот в чем: имеем массив ссылок, каждая из них пронумерована, нужно, чтобы с обновлением страницы в браузер выводилось по одной ссылке из массива в порядке возрастания.
Массив:
1 ссылка = 1
2 ссылка = 2
3 ссылка = 3
4 ссылка = 4
Ожидаемый вывод:
1 ссылка - обновляем страницу > 2 ссылка - и так далее
Подскажите пожалуйста, как с обновлением страницы увеличивать переменную на 1.
$a = 1;
$b = $a++; // прибавляется лишь один раз
+1 и просто ++ работает точно также. Поэтому немного стопорнулся.
Спасибо.
Вы меня запутали, потом распутали, а потом опять запутали. Но я распутался сам 😡 .
echo все таки $res2, где $res2 = curl_exec($ch) (второе выполнение курла); Так окей, это получилось, большое спасибо.
Не подскажете где можно подробнее почитать про "$links_arr[] = pq($link)->attr('href');" ?
Да, сработало. Но проблема в том, что в массиве первый элемент отображается как "/" (ссылка на главную страницу). Как заставить php считать его ссылкой, а не просто символом?
Наверное уже заколебал вас... Не хочет, зараза, выводить первую страницу в браузер(хотя массив получается читаемым).
foreach ($urlosearch as $link) { $links_arr[] = pq($link)->attr('href'); } $first = array_shift($links_arr); curl_setopt($ch, CURLOPT_URL, $first); curl_setopt($ch, CURLOPT_HEADER, 1); $res2 = curl_exec($ch); echo $res2;
Может еще разок подскажете?
Говорит, просто я сначала не понял контекста фразы:
при таком коде:
$htmldoc = phpQuery::newDocument($res); //выполнение поиска $urlosearch = $htmldoc->find('a'); foreach ($urlosearch as $link) { $links_arr[] = pq($link)->attr('href'); } $firstlink = array_shift($links_arr[]); $perehod = curl_setopt($ch, CURLOPT_URL, $firstlink); echo $perehod;
также выдается ошибка, что код вне массива "Warning: array_shift() [function.array-shift]: The argument should be an array", ругается именно на "$firstlink = array_shift($links_arr[]);". По ходу дела зря я на библиотеки нарвался. Нужно было регулярки добивать.