<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог Гилыча &#187; FreeBSD 8</title>
	<atom:link href="http://gillbeits.ru/category/nix/freebsd-8/feed/" rel="self" type="application/rss+xml" />
	<link>http://gillbeits.ru</link>
	<description>Блог Гилыча. Все о программировании в WEB, и многом другом.</description>
	<lastBuildDate>Wed, 07 Dec 2011 21:06:48 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Многопоточность в PHP 5.3.2</title>
		<link>http://gillbeits.ru/2010/07/21/74/</link>
		<comments>http://gillbeits.ru/2010/07/21/74/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 09:59:27 +0000</pubDate>
		<dc:creator>Гилыч</dc:creator>
				<category><![CDATA[FreeBSD 8]]></category>
		<category><![CDATA[PHP-CLI]]></category>
		<category><![CDATA[fork]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://gillbeits.ru/?p=74</guid>
		<description><![CDATA[Понадобилось в несколько потоков данные обрабатывать. Писать свой класс для работы с системными функциями PHP неохота, тем более, все-таки, не люблю я всякие proc_open, system и т. д. Появилось решение использовать аналог fork от perl, да-да, таковой имеется у PHP в виде библиотеки pcntl. Итак, исходные данные: Сервер - FreeBSD 8; PHP - 5.2.3; Последняя [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgillbeits.ru%2F2010%2F07%2F21%2F74%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgillbeits.ru%2F2010%2F07%2F21%2F74%2F&amp;style=normal&amp;service=bit.ly&amp;service_api=gillbeits%3AR_741e731a2a7b84945714f7032f89059e&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Понадобилось в несколько потоков данные обрабатывать. Писать свой класс для работы с системными функциями PHP неохота, тем более, все-таки, не люблю я всякие proc_open, system и т. д.<br />
<span id="more-74"></span><br />
Появилось решение использовать аналог fork от perl, да-да, таковой имеется у PHP в виде библиотеки pcntl.<br />
Итак, исходные данные:</p>
<ul>
<li>Сервер - FreeBSD 8;</li>
<li>PHP - 5.2.3;</li>
<li>Последняя версия портов;</li>
</ul>
<p>Собираем библиотеку pcntl:</p>
<pre class="brush: bash; title: ; notranslate">
# cd /usr/ports
# make search name=pcntl
# cd /usr/ports/devel/php5-pcntl
# make install
</pre>
<p>А дальше начинается работа с PHP.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
// задаем кол-во потоков
$threads = 10;
$i = 0;
$pid_arr = array();
while ($i &lt; intval($threads))
{
	$pid = pcntl_fork(); // вот он, - знакомый до боли fork()
	if ($pid == -1)
	{
		die('could not fork');
	}
	else
		{
		if ($pid) // parent
		{
			$pid_arr[$i] = $pid;
		}
		else // child
		{
			somefunction($i+1); // функция, которая будет основой в дочернем процессе...
			// делаем выход или процессы будут продолжать плодиться
			exit(0);
		}
	}
	$i++;
}
foreach ($pid_arr as $pid)
{
	pcntl_waitpid($pid, $status);
}
function somefunction($i){
	print &quot;fucntion thread - $i\n&quot;;
}
?&gt;
</pre>
<p>Собственно все, - пока работает и нареканий нет...</p>
]]></content:encoded>
			<wfw:commentRss>http://gillbeits.ru/2010/07/21/74/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Переход на php-5.3.2 на FreeBSD 8</title>
		<link>http://gillbeits.ru/2010/07/20/25/</link>
		<comments>http://gillbeits.ru/2010/07/20/25/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 09:22:36 +0000</pubDate>
		<dc:creator>Гилыч</dc:creator>
				<category><![CDATA[FreeBSD 8]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://gillbeits.ru/?p=25</guid>
		<description><![CDATA[Итак, Вы решили перейти все же на php5.3 в среде FreeBSD 8. Сразу скажу, в процессе перехода возникнут подводные камни. Связаны они прежде всего с тем, что в php53 библиотека pcre не является отдельным модулем. Приступим. Обновляем порты на FreeBSD. Процесс долгий, - пьем чай. Теперь нам надо удалить предыдущие модули для php52, и это [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgillbeits.ru%2F2010%2F07%2F20%2F25%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgillbeits.ru%2F2010%2F07%2F20%2F25%2F&amp;style=normal&amp;service=bit.ly&amp;service_api=gillbeits%3AR_741e731a2a7b84945714f7032f89059e&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Итак, Вы решили перейти все же на php5.3 в среде FreeBSD 8.<br />
Сразу скажу, в процессе перехода возникнут подводные камни.<br />
Связаны они прежде всего с тем, что в php53 библиотека pcre не является отдельным модулем.<br />
<span id="more-25"></span><br />
Приступим.<br />
Обновляем порты на FreeBSD.</p>
<pre class="brush: bash; title: ; notranslate">
# cd /usr/ports
# portsnap fetch extract
</pre>
<p>Процесс долгий, - пьем чай.<br />
Теперь нам надо удалить предыдущие модули для php52, и это обязательно!</p>
<pre class="brush: bash; title: ; notranslate">
# pkg_delete php52-*
</pre>
<p>Возможно не все они удалятся, в процессе смотрите, и зачищайте то, что не удалилось автоматом.<br />
Дальше уже проще.</p>
<pre class="brush: bash; title: ; notranslate">
# cd /usr/ports/lang/php5
# make clean install
# cd ../php5-extensions
# make clean install
</pre>
<p>Собственно выбираете нужные Вам модули, ставите и радуетесь убранным функциям =)<br />
Ошибки и правки в комменты....</p>
]]></content:encoded>
			<wfw:commentRss>http://gillbeits.ru/2010/07/20/25/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка и настройка subversion на FreeBSD 8</title>
		<link>http://gillbeits.ru/2010/07/15/36/</link>
		<comments>http://gillbeits.ru/2010/07/15/36/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 08:44:53 +0000</pubDate>
		<dc:creator>Гилыч</dc:creator>
				<category><![CDATA[FreeBSD 8]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://gillbeits.ru/?p=36</guid>
		<description><![CDATA[Для начала маленький экскурс, что такое subversion. Subversion - свободная централизованная система управления версиями. Ее часто называют SVN. Пришла она на замену уже устаревшей CVS. Не претендую на первооткрывателя. но все же напишу, как делаю я. Для начала заходим под root'ом: Далее обновляем порты, если долго этого не делали: Идем по пути к subversion и [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgillbeits.ru%2F2010%2F07%2F15%2F36%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgillbeits.ru%2F2010%2F07%2F15%2F36%2F&amp;style=normal&amp;service=bit.ly&amp;service_api=gillbeits%3AR_741e731a2a7b84945714f7032f89059e&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Для начала маленький экскурс, что такое subversion. Subversion - свободная централизованная система управления версиями. Ее часто называют SVN. Пришла она на замену уже устаревшей CVS.</p>
<p><span id="more-36"></span></p>
<p>Не претендую на первооткрывателя. но все же напишу, как делаю я.</p>
<p>Для начала заходим под root'ом:</p>
<pre class="brush: bash; title: ; notranslate"># sudo -s (для меня это выглядит так, Вы можете использовать другой вариант)
# su -</pre>
<p>Далее обновляем порты, если долго этого не делали:</p>
<pre class="brush: bash; title: ; notranslate"># cd /usr/ports
# portsnap fetch extract</pre>
<p>Идем по пути к subversion и устанавливаем:</p>
<pre class="brush: bash; title: ; notranslate"># cd /usr/ports/devel/subversion
# make clean install</pre>
<p>Ждем полной установки и добавляем строки в /etc/rc.conf :</p>
<pre class="brush: bash; title: ; notranslate"># echo 'svnserve_enable=&quot;YES&quot;' &gt;&gt; /etc/rc.conf
# echo 'svnserve_flags=&quot;-d --listen-port=3690&quot;' &gt;&gt; /etc/rc.conf
# echo 'svnserve_data=&quot;/home/svn/repositories&quot;' &gt;&gt; /etc/rc.conf
# echo 'svnserve_user=&quot;svn&quot;' &gt;&gt; /etc/rc.conf
# echo 'svnserve_group=&quot;svn&quot;' &gt;&gt; /etc/rc.conf</pre>
<p>Собственно создаем папку для репозиториев:</p>
<pre class="brush: bash; title: ; notranslate"># mkdir /home/svn/repositories</pre>
<p>Добавляем группу svn и пользователя в эту группу:</p>
<pre class="brush: bash; title: ; notranslate"># pw group add svn
# pw user add svn -g svn -s /sbin/nologin -d /home/svn/repositories/</pre>
<p>Даем права на папку с репозиториями пользователю:</p>
<pre class="brush: bash; title: ; notranslate"># chown -R svn:svn /home/svn/</pre>
<p>Запускаем демона:</p>
<pre class="brush: bash; title: ; notranslate"># /usr/local/etc/rc.d/svnserve start</pre>
<h3>Первая часть закончена, теперь настроим один репозиторий для работы.</h3>
<p>Первым делом создадим его:</p>
<pre class="brush: bash; title: ; notranslate"># svnadmin create /home/svn/repositories/myFirstRepository
# chown -R svn:svn /home/svn/ </pre>
<p>Теперь настраиваем доступ к данному репозиторию, идем по пути /home/svn/repositories/myFirstRepository/conf и правим файл svnserve.conf:</p>
<pre class="brush: bash; title: ; notranslate"># cd /home/svn/repositories/myFirstRepository/conf
# vi svnserve.conf </pre>
<p>Раскомментируем строки:</p>
<pre class="brush: bash; title: ; notranslate">anon-access = none
auth-access = write
password-db = passwd </pre>
<p>Теперь создаем пользователей для доступа к данному репозиторию:</p>
<pre class="brush: bash; title: ; notranslate"># vi passwd</pre>
<p>и добавляем туда пользователя и пароль в формате user = passwd</p>
<p>Делаем рестарт демону:</p>
<pre class="brush: bash; title: ; notranslate"># /usr/local/etc/rc.d/svnserve restart</pre>
<p>Репозиторий готов к работе с клиентом.</p>
<h3>А теперь расскажу Вам, как сделать красивую структуру в репозитории.</h3>
<span class="doc" style="">Директория /trunk содержит основную линию разработки проекта, /branches содержит все ветви, /tags содержит все метки.</span>
<pre class="brush: bash; title: ; notranslate"># cd /home/svn/repositories/
# mkdir svntmp
# cd svntmp
# mkdir trunk branches tags
# cd ..
# svn import svntmp svn://user@localhost/myFirstRepository -m 'struct create' </pre>
<p>После этого мы получим "ровную" структуру для  нашего репозитория.</p>
]]></content:encoded>
			<wfw:commentRss>http://gillbeits.ru/2010/07/15/36/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

