RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 355
от 30.05.2006, 01:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 305, Экспертов: 50
В номере:Вопросов: 2, Ответов: 8


Вопрос № 44069: Доброе утро! Такой вопрос: есть функция flock, которая как я понял блокирует доступ к файлы на то время пока с этим файлом работают, а если другие пользователи зашли на страницу, а файл блокирован, то что будет? пользователь просто не получит доступ ...
Вопрос № 44110: Привет, эксперт! Подскажите плиз как запустить скрипт на выполнение, но без include и require. Они не подходят, т.к. получается, что скрипт запущен из директории того скрипта, куда инклюд делаю,а у меня html-файлы с картинками на сервере в др. папке,...

Вопрос № 44.069
Доброе утро! Такой вопрос: есть функция flock, которая как я понял блокирует доступ к файлы на то время пока с этим файлом работают, а если другие пользователи зашли на страницу, а файл блокирован, то что будет? пользователь просто не получит доступ к файлу?
Отправлен: 24.05.2006, 09:47
Вопрос задал: Грицай Алексей Юрьевич (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Madproger
Здравствуйте, Грицай Алексей Юрьевич!

Чтобы установить общее запирание (чтение), установите operation в значение LOCK_SH (или 1, в случае версии PHP ниже 4.0.1).
Чтобы установить эксклюзивное запирание (запись), установите operation в значение LOCK_EX (или 2, в случае версии PHP ниже 4.0.1).
Чтобы отпереть файл (после общего или эксклюзивного запирания), установите operation в значение LOCK_UN (или 3, в случае версии PHP ниже 4.0.1).
Если вы не хотите, чтобы flock() блокировал файл при запирании, добавьте LOCK_NB (или 4, при использовании версии PHP ниже 4.0.1) к параметру operation.

http://ru.php.net/manual/ru/function.flock.php

---------
И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 6-ой класс)
Ответ отправлен: 24.05.2006, 10:31

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Грицай Алексей Юрьевич!
Нет, пользователь получит доступ к если несколько экземпляров скрипта захотят произвести запись в файл, то они сделают это по очереди, не толкаясь и не пихая все в одну кучу.

Детальнее - тут - http://www.kurepin.ru/php/zametki/flock/
---------
Ответы на все вопросы - на сайте www.ya.ru :)
Ответ отправил: Устинов Сергей Евгеньевич (статус: 10-ый класс)
Ответ отправлен: 24.05.2006, 10:41
Оценка за ответ: 5

Отвечает: Alexey Vilchinsky
Здравствуйте, Грицай Алексей Юрьевич!
Можно заблокировать файл например только на запись.
Тогда читать его остальные все равно смогут
---------
Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: 8-ой класс)
Ответ отправлен: 24.05.2006, 11:05

Отвечает: Cybernetic_Creature
Здравствуйте, Грицай Алексей Юрьевич!
если вы будете использовать общее запирание то да.
а если использовать ексклюзивное запирание программа будет ждать пока доступ к файлу откроется
Ответ отправил: Cybernetic_Creature (статус: Специалист)
Ответ отправлен: 25.05.2006, 13:54


Вопрос № 44.110
Привет, эксперт! Подскажите плиз как запустить скрипт на выполнение, но без include и require. Они не подходят, т.к. получается, что скрипт запущен из директории того скрипта, куда инклюд делаю,а у меня html-файлы с картинками на сервере в др. папке, получается, что скрипт запущен не из той директории. Короче, мне надо так запустить скрипт, чтобы считалось, что он запущен из той же папки на сервере, где он находится. Надеюсь, я более-менее доступно объяснил :)
Спасибо заранее!!!
Отправлен: 24.05.2006, 16:35
Вопрос задал: Bullet-Proof (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Bullet-Proof!

Можно перед include() поменять текущий каталог на каталог со скриптом, который нужно выполнить - функция cddir() - http://ua2.php.net/manual/ru/function.chdir.php,
а после include() вернуть на предыдущий уровень.
В приложени пример запоминает текущий каталог, изменяет его на другой каталог, инклюдит другой скрипт из этого каталога, а после его выполнения возвращает текущий каталог в исходное состояние.

Приложение:

---------
Ответы на все вопросы - на сайте www.ya.ru :)

Ответ отправил: Устинов Сергей Евгеньевич (статус: 10-ый класс)
Ответ отправлен: 24.05.2006, 17:20

Отвечает: PVS
Здравствуйте, Bullet-Proof!
Попробуйте приблизительно так
echo implode(" ",file("http://mysite.com/script.php?param1=".$param1."¶m2=".$param2));
В этом случае Ваш скрипт просто выполнится из той директории, где он лежит. Но имейте ввиду, что таким образом его можна выполнить и напрямую - тоесть здесь есть определенные проблеммы с безопасностью.
Ответ отправил: PVS (статус: 2-ой класс)
Ответ отправлен: 24.05.2006, 18:23

Отвечает: Андрющенко Вячеслав Васильевич
Здравствуйте, Bullet-Proof!
Извините, но зачем же так усложнять себе жизнь?=)
Никто не запретит сделать так:
include('../../folder/script.php');
или include('./folder/script.php');
Ответ отправил: Андрющенко Вячеслав Васильевич (статус: 1-ый класс)
Ответ отправлен: 25.05.2006, 05:40

Отвечает: Cybernetic_Creature
Здравствуйте, Bullet-Proof!
была у меня такая проблема.
я должен был некоторые темы форума на первую страницу.
но вместо смайликов показывались квадратики с крестиком (:)).
я просто заменил везде где встречаются <img src=" на <img src="/forum/images
$mtext = str_replace('<img src="',"<img src="/forum/images",$mtext);
так же можно использовать фреймы
Ответ отправил: Cybernetic_Creature (статус: Специалист)
Ответ отправлен: 25.05.2006, 15:42


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.33 от 25.05.2006
Яндекс Rambler's Top100

В избранное