SegmentFault phar的问题
2016-10-28T09:29:51+08:00
https://segmentfault.com/feeds/tag/phar
https://creativecommons.org/licenses/by-nc-nd/4.0/
打包phar文件过大的问题。
https://segmentfault.com/q/1010000007306359
2016-10-28T09:29:51+08:00
2016-10-28T09:29:51+08:00
fatrbaby
https://segmentfault.com/u/fatrbaby
0
<blockquote><p><strong>根据一个开源工具得到的灵感,使用流打包,并使用token_get_all移除了所用PHP文件的空白。现在打包出来只有93k了。谢谢关注。</strong></p></blockquote>
<p>我一个简单的文件,加上一个symfony的process包,打包出来竟有125M之巨,而composer那么多文件打包出来只有1.6M,百思不得其解。附上打包代码:</p>
<pre><code><?php
$pharFilename = 'deploy.phar';
if (file_exists($pharFilename)) {
e('remove old file...');
unlink($pharFilename);
}
$ignoreFiles = [
'readme.md',
'composer.json',
'composer.lock',
'.gitignore',
basename(__FILE__),
];
e('putting files...');
try {
$phar = new Phar(
__DIR__.DIRECTORY_SEPARATOR.$pharFilename,
FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME,
$pharFilename
);
} catch (UnexpectedValueException $e) {
echo $e->getMessage(), PHP_EOL;
} catch (BadMethodCallException $e) {
echo $e->getMessage(), PHP_EOL;
}
e('building...');
$phar->buildFromDirectory(__DIR__);
e('remove unused files...');
array_walk($ignoreFiles, function ($file) use ($phar) {
$phar->delete($file);
});
e('set stub...');
$phar->setStub($phar->createDefaultStub('deploy.php', 'deploy.php'));
e('compress...');
$phar->compressFiles(Phar::BZ2);
e('build done.');
function e($string)
{
echo $string, PHP_EOL;
}
</code></pre>
上次看到`sf`使用php的phar来更新版本,弱弱的问几个问题!
https://segmentfault.com/q/1010000000749580
2014-10-30T17:06:27+08:00
2014-10-30T17:06:27+08:00
Outshine
https://segmentfault.com/u/outshine
1
<blockquote>
<p>提问之前粗略的看了下网上教程,云里雾里的。</p>
</blockquote>
<p>Q1:使用phar打包需要对现在的代码做特殊处理吗?比如我现在的项目,如果用这种方式往正式服务器更新版本,需要修改以前的代码否?<br>
Q2:比如我打包成了<code>project.phar</code>,之前的项目入口是<code>Index.php</code>,那么打包之后直接改<code>apache</code>的索引文件增加一个<code>project.phar</code>就行了?<br>
Q3:怎样才能无缝更新版本?我之前都是先把新版本文件上传完,然后修改以前网站文件夹名字(比如加一个_20141030),然后把刚上传的文件夹名字改为以前网站文件夹的名字!但是这样也会有大概<code>3s</code>~<code>5s</code>左右的中断。<br>
Q2我等下下班之后自己试一下!可无视!</p>
将thinkphp的Lib目录打成phar包,替换掉Lib目录,整合时遇到问题
https://segmentfault.com/q/1010000000723938
2014-10-15T14:06:28+08:00
2014-10-15T14:06:28+08:00
mailg
https://segmentfault.com/u/mailg_to
0
<p>项目是基于thinkphp开发的,现在有个需求是要将项目的Lib目录打成phar包,以后直接替换这个包以便于程序升级,phar包我找网上的教程已经可以打出来,但是将phar包放入到目录里,就出现问题了,我也知道是路由访问不到文件的问题,但不知如何进展,这么做是否可行呢。(也试着将ThinkPHP的代码和Lib共同打入包中--不行。或者把整个项目都打成一个包(测试的时候也有问题))</p>
如何利用phar简化web项目部署
https://segmentfault.com/q/1010000000719960
2014-10-13T10:07:59+08:00
2014-10-13T10:07:59+08:00
gaara
https://segmentfault.com/u/junsen
0
<p>不采取<code>rsync</code>文件同步的方案。<code>rsync</code>不利于版本回滚。<br>
希望结合<code>git</code>或<code>phar</code>来做部署。<br>
1. 有什么推荐的工具能够简化phar的打包部署?<br>
2. 静态文件是否应该打包到<code>phar</code>文件?<br>
3. 静态文件打包到<code>phar</code>,访问效率显然会大大降低,不打包的话,静态文件如何更新?注:静态文件暂时是没有放到单独服务器的</p>
PHP创建phar文档,有很多不明白的地方,运行报错
https://segmentfault.com/q/1010000000672542
2014-09-17T12:25:00+08:00
2014-09-17T12:25:00+08:00
happyfish
https://segmentfault.com/u/happyfish
0
<p>我想把index.php这个文件打包成phar文档:<br>
其文件组织是这样的:<br><img src="http://segmentfault.com/img/bVcY7w" alt="请输入图片描述"><br>
index.php与1.php在同一个目录。<br>
index.php 里面只有一个hello world<br>
然后在1.php里面代码是这样的:</p>
<pre><code class="lang-php"><?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2014/9/16
* Time: 21:45
*/
$phar = new Phar('user.phar', 0, 'user.phar');
$phar->buildFromDirectory(dirname(__FILE__) . '/index.php');
$phar->setStub($phar->createDefaultStub('1.php', '1.php'));
$phar->compressFiles(Phar::GZ);
</code></pre>
<p>运行结果报错了:<br><img src="http://segmentfault.com/img/bVcY7y" alt="请输入图片描述"><br>
为啥会错呢?<br>
$phar->setStub($phar->createDefaultStub('1.php', '1.php'));参数错了吗?<br>
这个stub是个啥东西?<br>
这个1.php是直接运行就可以了还是使用php命令行 运行呢?<br>
求大神解答</p>
使用phar到底能否带来性能的改变
https://segmentfault.com/q/1010000000094515
2011-05-18T16:16:33+08:00
2011-05-18T16:16:33+08:00
joyqi
https://segmentfault.com/u/joyqi
0
<p>我们知道php在5.3以后加入了phar功能,类似于java的jar打包。这样可以大大方便项目的打包发布,我的问题是它除了打包以外对性能是否有影响?是提高还是降低?打包后是否会编译成opcode?</p>