Как я заставляю PHP надежно загрузить файлы из корня сервера домашняя папка на CentOS?

Ужасный, но это работает. Необходимо, вероятно, заново продумать дизайн программы при необходимости в цикле как это. Это в основном проверяет, равна ли текущая целая секунда предыдущей проверенной и печатает число наносекунд начиная с изменения второго. Точность под влиянием сна.001.

while true; do T=$( date +%s ); while [[ $T -eq $( date +%s ) ]]; do sleep .001; done; date "+%N nanoseconds late"; done

Точность находится в миллисекундах, при условии, что 'полезная нагрузка' date "+%N nanoseconds late" не занимает больше времени, чем чуть менее чем секунда. Можно понизить загрузку ЦП путем увеличения периода сна или если Вы действительно не возражаете, просто заменяют команду сна true.

002112890 nanoseconds late
001847692 nanoseconds late
002273652 nanoseconds late
001317015 nanoseconds late
001650504 nanoseconds late
002180949 nanoseconds late
002338716 nanoseconds late
002064578 nanoseconds late
002160883 nanoseconds late

Это - плохая практика, потому что Вы в основном делаете тебя опросом ЦП для события, и Вы тратите впустую циклы ЦП. Вы, вероятно, хотите присоединить к прерыванию по таймеру (не возможный от удара) или использовать выделенное оборудование как микроконтроллер. ПК и его операционная система не разработаны для высокой точности синхронизации.

0
09.04.2013, 19:47
2 ответа

Я получил две идеи, которые могли бы решить Вашу проблему:

  • Вы могли создать cronjob как корень (crontab -e) это копирует файлы, в которых Вы нуждаетесь к папке, которую может считать веб-сервер.
    Можно настроить cronjob для выполнения однажды минута, которая должна быть достаточно для большинства случаев.
  • Создайте нового пользователя для своего Dropbox (это не хорошая практика для выполнения материала как корня если не абсолютно необходимый). Я также рекомендовал бы создать отдельного пользователя Dropbox, который только имеет совместный доступ к одной папке, в которой Вы нуждаетесь (таким образом, Вы случайно не совместно используете больше, чем Вы хотите к).

Если Вы хотите, чтобы я вошел в большее количество детали, не стесняйтесь спрашивать :)

0
28.01.2020, 02:53
  • 1
    Мысль о кроне, но это действительно повреждает замечательное почти оперативное чувство Dropbox. –  jnthnclrk 14.04.2013, 14:25
  • 2
    @jnthnclrk Затем что относительно моего другого предложения? Запустите Dropbox под новой учетной записью пользователя (например. dropboxsync) и позвольте ему синхронизировать учетную запись, которая только имеет доступ к данным, в которых это нуждается (например, путем создания нового acct, который только имеет доступ к единственной папке, это совместно используется к нему). –  mreithub 14.04.2013, 19:00
  • 3
    Да, это, вероятно, работало бы, но не отвечает на вопрос. Я в конечном счете отказался от идеи использовать Dropbox в пользу FTP, когда было похоже, что на вопрос нельзя было ответить. –  jnthnclrk 15.04.2013, 19:16

Установите символьную ссылку от своего корня документа до папки.

ln -s /var/www/reports /root/Dropbox/Reports

Это помогает непосредственно получить доступ к этим файлам, не изменяя настройки безопасности в Apache и PHP, если файлы читаемы.

1
28.01.2020, 02:53
  • 1
    Конечно, это прекрасно. –  jnthnclrk 08.04.2013, 12:47
  • 2
    Хм, сталкиваясь с некоторой проблемой с этим. Я создал символьную ссылку под корнем, но это перестало работать. Я затем пытался chown файл символьной ссылки к mydomain:psacln, но это привело to0 к сбою. –  jnthnclrk 08.04.2013, 23:28
  • 3
    Согласно этому (cyberciti.biz/faq / …) символьные ссылки всегда наследуют полномочия цели. Чувствуйте, что я возвращаюсь к начальной ситуации снова. спасибо –  jnthnclrk 08.04.2013, 23:33
  • 4
    Конечно, Вы должны прочитать полномочия для файла, но преимущество это, что Вы не позволяете Вашему веб-серверу дыры получать доступ ко всем файлам в том каталоге и можете символьная ссылка на только что один. –  Tobias 10.04.2013, 21:42
  • 5
    Как я добавляю полномочия чтения надежно? –  jnthnclrk 10.04.2013, 21:50

Теги

Похожие вопросы