我在家用开发机器(Mac)上运行Laravel 4并享受它到目前为止但在添加新站点时遇到了麻烦.问题是我在〜/ .homestead/Homestead.yaml文件中为这个新站点添加了这样的行:
folders:
- map: ~/Sites
to: /home/vagrant/Sites
sites:
- map: listingnaples.dev
to: /home/vagrant/Sites/listingnaples.com/public
- map: videocraftersusa.dev
to: /home/vagrant/Sites/videocraftersusa.com/
Run Code Online (Sandbox Code Playgroud)
然后,我的/ etc/hosts看起来像这样:
# MY SITES
192.168.10.10 listingnaples.dev
192.168.10.10 videocraftersusa.dev
192.168.10.10 laneyandchris.dev
Run Code Online (Sandbox Code Playgroud)
如果我进去做一个homestead destroy后来homestead up我可以访问任何这些新网站.这删除了我的数据库,真的让我回头.如何"刷新"可以这么说?如果我将myawesomesite.dev添加到我的/ etc/hosts,我怎样才能让宅基地拿起它?
我试过homestead --provision但这不是一个公认的命令.
对于它的价值,在我的〜/ .homestead /目录中,我没有VagrantFile.不知道那是在哪里,所以我也不能运行流浪者条款.
我从临时表中提取大约10万条记录,对数据进行一些细微修改,下载照片,然后将需要保存的字段放在"主"表中.这很快导致我的应用程序因内存不足而崩溃.
我阅读了关于使用chunk()和Laravel雄辩的ORM的非常简短的文档,但是不知道如何在我的课堂上开始实现它.
这是我目前正在做的事情:
public function fire()
{
// Turn off query logging
DB::connection()->disableQueryLog();
$feeds = RetsFeed::where('active','=',1)->get();
foreach ($feeds as $feed)
{
$class = "TempListing{$feed->board}";
$listings = $class::orderBy('MatrixModifiedDT','desc')->get();
$listings->each(function($listing) use ($feed) {
ListingMigrator::migrateListing($listing,$feed);
echo "Feed: $feed->board\r\n";
echo "SubcondoName: $listing->SubCondoName\r\n";
echo "Development: $listing->Development\r\n";
echo "\r\n";
});
}
}
Run Code Online (Sandbox Code Playgroud)
每个提要(或数据源)都被转储到不同家务中的临时表中.这很好.然后,我从一个表中获取所有hte列表(平均大约30k)并运行我的ListingMigrator方法.
在这个例子中我把块放在哪里?它会取代这条线:
$listings = $class::orderBy('MatrixModifiedDT','desc')->get();
Run Code Online (Sandbox Code Playgroud)
我并不完全理解雄辩文档中的结束.这就是他们要说的全部内容,这里是Laravel网站的代码示例:
User::chunk(200, function($users)
{
foreach ($users as $user)
{
//
}
});
Run Code Online (Sandbox Code Playgroud) 我正在努力将CSV插入表格中.我对CSV中的内容没有任何控制权,而且很多字段都是空白的.例如,在我的第一个记录中,字段"baths_full"只是空的(两个逗号背靠背).
在运行MySQL 5.5.37的生产服务器上,它将记录baths_full作为空字段插入.在运行MySQL 5.6.19的本地计算机上,它给出了错误:
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'baths_full' at row 1 (SQL: insert into `listings_queue` (`
Run Code Online (Sandbox Code Playgroud)
奇怪的是,表的模式是相同的.实际上,我使用生产机器的导出来创建本地数据库.
该字段baths_full设置为TinyInt,unsigned,allow null,默认为null.要添加的一件事是它看起来像在Laravel正在创建的SQL插入语句中,它将空值视为空格.无论如何,我的生产机器运行脚本没有问题,但在本地它不会运行.
在Laravel 4中,我正在设置我的本地开发机器(我的笔记本电脑),然后我有我的生产服务器.
在我的/bootstrap/start.php中
$env = $app->detectEnvironment(array(
'local' => array('MacBook-Pro-2.local'),
'production' => array('ripken'),
));
Run Code Online (Sandbox Code Playgroud)
然后我在我的根目录中创建了一个.env.local.php,其中包含以下内容:
<?php
return [
// Database Connection Settings
'db_host' => '127.0.0.1',
'db_name' => 'censored',
'db_user' => 'censored',
'db_password' => 'censored'
];
Run Code Online (Sandbox Code Playgroud)
那部分有效.但是,我去了我的生产服务器并创建了同样的文件,名为.env.production.php,并且它没有加载该文件中的变量.我不知道是什么让我想到这样做,但我重命名了文件.env.php而没有"生产"的名称,它的工作原理.
因此,我的问题是,为什么.env.production.php不起作用?我认为这就是Laravel的好人们想要我命名我的各种环境文件.
我安装了https://github.com/aws/aws-sdk-php-laravel?SDK 并按照 readme.md 中的说明进行操作。一切都安装好了,我把我的密钥、秘密、地区等放在/app/config/packages/aws/aws-sdk-php-laravel.
我得到的错误
PHP Fatal error: Class 'Aws\Common\Aws' not found in /Volumes/Data/Users/chris/Sites/ln.com/vendor/aws/aws-sdk-php-laravel/src/Aws/Laravel/AwsServiceProvider.php on line 48
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'Aws\\Common\\Aws' not found","file":"\/Volumes\/Data\/Users\/chris\/Sites\/ln.com\/vendor\/aws\/aws-sdk-php-laravel\/src\/Aws\/Laravel\/AwsServiceProvider.php","line":48}}
Run Code Online (Sandbox Code Playgroud)
上面引用的那个文件的第 48 行简单地说:
$aws = Aws::factory($config);
Run Code Online (Sandbox Code Playgroud)
我按照说明安装
我把我的提供者和别名放在 /app/config/app.php 中:
'Aws\Laravel\AwsServiceProvider'
Run Code Online (Sandbox Code Playgroud)
在提供者数组中。
我输入:
'AWS' => 'Aws\Laravel\AwsFacade'
Run Code Online (Sandbox Code Playgroud)
在别名部分。
然后,我尝试使用他们相同的用法示例:
$s3 = AWS::get('s3');
$s3->putObject(array(
'Bucket' => 'My Bucket',
'Key' => 'My Key',
'SourceFile'=> Config::get('settings.ProcessListings.image_dir') . $listing->mls_listing_id . "/test.txt"
));
Run Code Online (Sandbox Code Playgroud)
我试过的
我唯一的想法是在我试图在其中使用 SDK 的文件中,在顶部我有:
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
Run Code Online (Sandbox Code Playgroud)
我补充说:
use Aws\Laravel\AwsFacade;
use Aws\Laravel\AwsServiceProvider;
Run Code Online (Sandbox Code Playgroud)
和两者的组合,但都不起作用。有任何想法吗?
我使用的是 Ubuntu precision32 并切换到 14.04。我使用 Jeffrey Way 的设置(https://github.com/JeffreyWay/Vagrant-Setup)并且有效。我可以执行“vagrant ssh”并登录,然后使用用户名/密码 root/root 登录到 root。
当我尝试将 Sequel Pro 用于 GUI 时,出现以下错误:
Used command: /usr/bin/ssh -v -N -o ControlMaster=no -o ExitOnForwardFailure=yes -o ConnectTimeout=10 -o NumberOfPasswordPrompts=3 -i /Users/chrisfarrugia/.vagrant.d/insecure_private_key -o TCPKeepAlive=no -o ServerAliveInterval=60 -o ServerAliveCountMax=1 -p 2222 vagrant@127.0.0.1 -L 52688/127.0.0.1/3306 -L 52689/127.0.0.1/3306
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 2222.
debug1: fd 3 clearing O_NONBLOCK
debug1: …Run Code Online (Sandbox Code Playgroud)