Ink-developer

Ink-developer
Рейтинг
138
Регистрация
31.01.2009
Интересы
PHP, SEO
BredoGen.:
Укажите еще ОС и точную версию PHP (ts/nts). Попробую воспроизвести.

В локалке

Windows 7 PHP 5.3.2

Хостинг

Линукс какойто PHP 5.2

Тут такое дело что получилось без ошибок выполнить код, но крайне странным способом:

после блокировки файла базы, я отвлекаю процесс от данного файла и немного работаю с другим, что угодно хоть содаю левый файл хоть что, и ошибка пропадает, в файл записывается ровно 2000 строк.

netwind:
ну это ты так думаешь, что 50 мб.

Это ты думаешь, что я так думаю, но ты ошибаешся, там вообще и 10 мб не пахнет, не поверишь хватило ума написать с прозапасом.

dkameleon:
Не ваш ли это случай?

Склоняюсь к тому что, нет, т.к. в этом случае flock бы вообще не работал, а он работает и это проверено на практике, второй скрипт ждет выполнения 1го и только потом выполняется, из чего следует что flock работает.

Осипова Ирина Владимировн:
Из этой логики выходит, можно на вредить любому, сделать куча доров, с этим кодом и для кучи они забанят и нормальные сайты.

Банят не за факт наличия такого же кода адсенс, а по этому факту может пройти более тщательная проверка сайта на его право находиться в выдаче, а там возможно уже сложный алгоритм, который анализирует только подозрительные сайты, выносит решение. То есть вы совпадением кода адсенс можете только привлечь, как говорится ревизию сайта. Но опять же это все догадки.

melkozaur:
Осипова Ирина Владимировн,
Пукаешь здесь ты, своей теорией "яндекс банит за адсенс".

А вы не подумали что не за адсенс, а просто с помощью него вычислил сеть, тут ничего невероятного не вижу. Отличный способ вычислить сетку, вероятность его использования считаю крайне высокой.

Исходя из этого в теме ТС есть логика, но понятно дело, что за само наличие адсенса ни кто банить не будет.

palladin_jedi:

Вам выше я и edogs указали где у вас ошибка в логике скрипта.

Мне долго не потребовалось времени чтобы выяснить что его версия тут не подходит, все проверил при каждой операции файл блокируется удачно.

palladin_jedi:
Если не сложно, попытайтесь мне объяснить - что общего между высокой посещаемостью и чтением\записью довольно большого файла?

В предыдущем скрипте не имеется ввиду что файл большой, там может быть хоть 2 строки по 10 символов, сбой все равно произойдет при совпадении времени обращения, посещаемость лишь увеличивает шансы, что скрипт будет вызван одновременно больше я этим ни чего не хотел сказать.

думаю ошибка расположена между:


flock($fopen,LOCK_EX); # Блокируем файл

где то тут

flock($fopen,LOCK_UN); # Разблокируем

может функция fread глючит? не полностью считывает файл.

palladin_jedi:
Скрипты, к которым идёт обращение на сайте (тот же PHP) рассчитаны на быстрое выполнение - "исполнился и забыл", но никак не на параллельную, безошибочную, многопоточную запись в файл.

Вы недопонимаете ситуацию, сейчас поясню:

Забываем про то, что писали выше и моделируем ситуацию по вашим правилам "быстрое выполнение - исполнился и забыл"

вот код


$fopen=fopen("111.dat","a+");
flock($fopen,LOCK_EX);
$file=fread($fopen,50000000);
if(strlen($file)>=1){ $file=explode("\n",$file); }else{ $file[0]=""; }
$count=count($file);
if($count!="0"){ array_unshift($file,$dat); }else{ $file[0]=$dat; }
$file=trim(implode("\n",$file));
ftruncate($fopen,0);
fwrite($fopen,$file);
fflush($fopen);
flock($fopen,LOCK_UN);
fclose($fopen);

Простейший быстрый скрипт, открыл записал закрыл, и что проблемы по вашему уже нет? Ни чего не изменилось, т.к. опять же заходят 2 пользователя в 1 единицу времени и косяк на лицо, а для того чтобы они вошли одновременно достаточно лишь высокой посещалки ресурса.

edogs:
Если локнули неудачно, то надо снова пробовать залочить

Первый стоящий ответ, ушел проверять.

palladin_jedi:
Вот в этом участке ошибка. :)
Обычно такие процессы распараллеливают, чтобы они друг другу не мешали.

Если это шутка, то прощаю, если вы серьезно, то молчу 😂

Что значит, распараллеливают? как я могу распараллелить вызов скрипта двумя посетителями одновременно? То что я сделал 1000 циклов, этим я лишь увеличил вероятность запуска в один и тот-же момент (тоесть имитировал посещаемый сайт), любой другой скрипт не меняет ситуацию просто вероятность сбоя в разы меньше но она всегда есть. Короче ответ не в тему.

gormarket:
Ink-developer, попробуйте проверять возвращаемое функцией flock значение.

И еще flock может не всегда работать, посмотрите здесь например.

flock проверил файл блокируется, я только убедился что она блокирует файл и все.

.

Zolingen:
На прямую нет, но может повлиять косвенно, если
- на новом виртуальном хостинге (если Вы берете виртуальный) на вашем IP куча других сайтов, в том числе и ГС

Не несите бред в массы, 70 % сайтов на вирт. хостинге ГС и с ними параллельно отлично работают СДЛ и отлично ранжируются.

Где вы вообще этот бред собираете в мозги?

Может только в том случае если хостинг периодически не отвечает поисковику, а сколько сайтов на IP вообще ни как не влияет и не может влиять.

Все что выводится JS Яндекс просто не проиндексирует и все, санкций за это нет и быть не может т.к. было бы идиотизмом давить сверх перспективную технологию такую как AJAX открытие которой сало прорывом в сайтостроении.

Почему кликов нет, а доход 0,01 $ за что начислили? Судя по клиентским каналам доход, был с баннера, но кликов не было.

Всего: 834