可能很多PHPer都用到了PHP提供的Session功能,可以方便的进行会话功能处理,PHP服务端默认的session存储是文件存放方式,在Windows上PHP默认的Session服务端文件存放在C:\WINDOWS\Temp下,*NIX下默认存放在/tmp下,如果说并发访问很大或者session建立太多,在这两个目录下就会存在大量类似sess_xxxxxx的session文件,同一个目录下文件数过多会导致性能下降,并且可能导致受到攻击最终出现文件系统错误。针对这样的情况,PHP本身体提供了比较好的解决办法。
不少朋友可能都没有注意到php.ini里面Session设置部分中有这样一项:
[coolcode linenum=”off”]
; session.save_path = “N;MODE;/path”
[/coolcode]
这项设置提供给我们可以给session存放目录进行多级散列,其中“N”表示要设置的目录级数,“MODE”表示目录的权限属性,默认为600,在WINDOWS上基本是不用设置的,*NIX上也可以不用设置,后面的“/path”表示session文件存放的根目录路径,比如我们设置为下面的格式
[coolcode linenum=”off”]
session.save_path = “2;/tmp/phpsession”
[/coolcode]
上面的设置表示我们把/tmp/phpsession目录作为php的session文件存放根目录,在该目录下进行两级目录散列,每一级目录分别是0-9和a-z共36个字母数字为目录名,这样存放session的目录可以达到36*36个,相信作为单台服务器来说,这是完全够用了,如果说您的系统架构设计为多台服务器共享session数据,可以把目录级增加到3级或者更多。
需要注意的是,php自己并不会自动创建子目录,需要您自己动手去创建,网上找到这样的自动创建目录的代码,大家可以做个参考。下面的代码自动创建3级子目录,可以自己动手根据需要进行修改。
[coolcode linenum=”off” lang=”php”]
[/coolcode]
大家可能注意到前面的文字中提到了有关多服务器共享php的SESSION,这是很多应用都会遇到的问题,网上也有不少相关的资源,大家可以去google一下,Michael这里只提一下大概的思路。
一般来说我们用到最多的方法有两种:
1、NFS或者Samba共享的方法,让各个服务器上存放session文件的磁盘共享,这种方法简单可行。
2、集中存储到数据库中,这是比较多的实现方法,通过php提供的session_set_save_handler()函数来重定义session函数,推荐使用这种方法。
欢迎大家一起交流和讨论php中和session相关的技巧和经验。
不错,以前就注意到这个功能,不过一直没试过,现在正好一试:)
另外,关于session,我遇到了一个调试了几乎一个下午也没解决的问题,不知Michael有没有遇到过,简单地说就是下面的三段代码:
index.php:
diogin.php:
another.php:
这样,访问index.php,将新建一个session,然后删除,再检查cookie数组。这三段代码是能正常工作的,可以把session使用的cookie删除。但当我把类似的代码集成进系统后,想用setcookie来删除会话cookie,就行不通,调试了一下午都没解决。不知这里是不是有什么需要注意的事情我没察觉到,Michael遇到过类似的情况吗?
啊,奇怪,源代码怎么给过滤掉了?
那再发一次,不好意思:)
index.php:
session_save_path(‘./’);
session_name(‘DIOGIN_SESSID’);
session_start();
$_SESSION[‘diogin’] = ‘haha’;
header(‘Location: diogin.php’);
diogin.php:
session_save_path(‘./’);
session_name(‘DIOGIN_SESSID’);
if (isset($_COOKIE[‘DIOGIN_SESSID’])) {
session_start();
$_SESSION = array();
session_destroy();
setcookie(‘DIOGIN_SESSID’, false);
header(‘Location: another.php’);
}
another.php:
var_dump($_COOKIE);
说实话,我仔细看了您的留言,但是我还没有搞明白你到底想实现的需求和功能,从你的代码来看,很少看到这样使用cookie和session的,不知道是为了满足什么需求,通常来说,session在我们的应用里面,迫不得已才使用,比如验证码图片,别的地方如果要使用到session,我们都是使用自己开发的session管理,session存储在内存数据库中。
如有可能,你可以再把要实现的需求整理一下告知。
有一个将 PHP Session 利用 memcached 来保存的类。好像是一个丹麦的人写的。 🙂
[Comment ID #13354 Will Be Quoted Here]
这位朋友说得很对,我用数据库保存过,为了多台机器共享session,用memcached原理一样,就是存储和读取的时候把从数据库改成从memcached操作,另外还可以使用共享内存,比如PHP的APC扩展。
我 PHP.INI 知道有这个设置。但真不知道可以设置散列目录储存。
一般我用session_save_path 不过好象这个函数并不支持目录散列。呵呵
[Comment ID #25801 Will Be Quoted Here]
最新的pecl_memcached 扩展可以支持直接在php.ini里面设置类似这样的东西:
session.save_handler = memcache
session.save_path = “tcp://host:port?persistent=1&weight=2&timeout=2&retry_interval=15,tcp://host2:port2”
比如设置:session.save_path = “tcp://127.0.0.1:11211″, 连接本机上11211端口的memcached来存储session
详细的语法可以参考官方文档 php_memcache.h cvs log
最新的session共享和性能提升将使用memcached来存储session,见php.ini的文档部分就明白了,可以设置多个memcached给php的session来使用,并且可以配置各个mc的权重,这是我们现在主流的使用手段。
你好! 我想问一下 我用了 session_save_path 更改了session保存路径 后来发现我生成的sesion文件夹一直都没有删除过。 就是生成一个之后这一个文件一直都会在。请问这种 情况是什么 原因呢
这个问题是这样的,php的session有自动回收机制,通过session.cookie_lifetime,session.gc_probability,session.gc_divisor以及session.gc_maxlifetime几个参数来控制,在满足条件的情况下,系统会自动进行垃圾回收,但是有一种情况,如果你在session.save_path选项中设定使用子目录来存储session数据文件,垃圾回收程序不会自动启动,你必须使用自己编写的shell脚本、cron项或者其他办法来执行垃圾文件处理。
如我前面所说的,现在普遍采用的办法已经不是使用多集目录的方式来存储session文件,而是采用更高效的memcached或者redis等内存缓存来实现,建议你研究研究,在机器上配置一个memcached,很简单的,这样一劳永逸,还可以实现分布式的服务器之间共享session
That is really interesting, You are an overly professional
blogger. I’ve joined your rss feed and look forward to
in quest of extra of your great post. Additionally, I have shared your website in my social networks
Wow! In the end I got a website from where I know how
to actually take useful facts concerning my study and knowledge.
I think the admin of this web page is in fact working hard in favor
of his web page, as here every data is quality based material.
Pretty! This has been an incredibly wonderful article. Thank you for supplying
this info.
Tremendous issues here. I’m very glad to peer your article.
Thank you a lot and I am having a look forward to touch you.
Will you please drop me a e-mail?
Amazing! This blog looks exactly like my old one! It’s on a entirely different topic but it has
pretty much the same page layout and design. Wonderful choice of
colors!
Hello, I do believe your site could possibly be
having internet browser compatibility problems. Whenever I look at your web site in Safari, it looks
fine however when opening in IE, it has some overlapping issues.
I just wanted to give you a quick heads up! Other than that,
fantastic blog!
I was able to find good information from your articles.
Hi there I am so thrilled I found your blog, I really found you by accident, while
I was searching on Yahoo for something else, Nonetheless I am here now and would just like to say thank you for a marvelous post and a all
round interesting blog (I also love the theme/design),
I don’t have time to browse it all at the moment but I have book-marked it and also
added your RSS feeds, so when I have time I will be back to read much more, Please do keep up
the superb work.
Keep this going please, great job!
This design is wicked! You obviously know how to keep a reader entertained.
Between your wit and your videos, I was almost moved to start my own blog (well,
almost…HaHa!) Wonderful job. I really loved what you had to
say, and more than that, how you presented it. Too cool!
Write more, thats all I have to say. Literally, it seems as
though you relied on the video to make your point.
You definitely know what youre talking about, why throw away your intelligence on just posting videos to your site when you could be giving us something enlightening to
read?
Thank you for the good writeup. It if truth be told used to be a enjoyment account
it. Glance complex to more delivered agreeable from you!
However, how could we keep in touch?
Hi, the whole thing is going fine here and ofcourse every one is sharing data, that’s actually
fine, keep up writing.
Hello, i think that i noticed you visited my weblog so
i got here to return the favor?.I’m trying to in finding issues to improve my website!I suppose its ok to make use of some of
your ideas!!
Hello there, just became aware of your blog through Google, and found that it
is really informative. I am gonna watch out for brussels.
I’ll appreciate if you continue this in future.
Lots of people will be benefited from your writing.
Cheers!
Thank you for every other informative web site.
The place else could I am getting that kind of information written in such a perfect method?
I have a venture that I am simply now operating on, and I have been on the glance
out for such information.
Have you ever thought about publishing an ebook or guest authoring on other blogs?
I have a blog based on the same information you discuss and would love
to have you share some stories/information. I know my
readers would enjoy your work. If you’re even remotely
interested, feel free to shoot me an e-mail.
Undeniably consider that that you stated. Your favourite reason appeared to
be on the net the simplest factor to consider of.
I say to you, I definitely get annoyed even as folks consider concerns that they just don’t understand
about. You managed to hit the nail upon the highest and outlined out the whole
thing with no need side effect , other folks can take a signal.
Will likely be again to get more. Thanks
I am truly thankful to the holder of this web site
who has shared this wonderful article at at this place.
Hey there just wanted to give you a quick heads up and let you know a few of the
pictures aren’t loading properly. I’m not sure why but I think
its a linking issue. I’ve tried it in two different internet browsers and both show the
same outcome.
Great blog! Is your theme custom made or did you download it
from somewhere? A theme like yours with a few simple tweeks
would really make my blog jump out. Please let me know where you got your design. Thanks
Hi there friends, how is everything, and what you want to say regarding this paragraph, in my view its genuinely amazing
for me.
whoah this weblog is great i like reading your posts.
Stay up the good work! You already know, lots of people are searching round
for this information, you can aid them greatly.
I have been browsing online greater than 3
hours lately, but I never discovered any fascinating article
like yours. It is pretty value enough for me.
In my opinion, if all site owners and bloggers made good content material as you probably did, the net can be a lot more helpful than ever before.
Terrific article! This is the kind of info that are meant to be shared around the net.
Shame on the seek engines for not positioning this post higher!
Come on over and consult with my website . Thanks =)
I needed to thank you for this good read!! I definitely
enjoyed every bit of it. I have got you bookmarked to check out new things you post…
I am extremely impressed along with your writing talents as
neatly as with the structure for your blog.
Is that this a paid subject or did you modify it your self?
Anyway stay up the nice quality writing, it’s rare to look a great weblog like this
one nowadays..
I’ve been exploring for a bit for any high quality articles or weblog posts
in this sort of space . Exploring in Yahoo I ultimately stumbled upon this site.
Studying this info So i’m satisfied to show that I have a very just right uncanny feeling I came
upon exactly what I needed. I most definitely will make certain to don?t fail to remember
this website and give it a glance regularly.
Hey this is kinda of off topic but I was wanting to know if blogs
use WYSIWYG editors or if you have to manually code
with HTML. I’m starting a blog soon but have no coding know-how
so I wanted to get advice from someone with experience.
Any help would be enormously appreciated!
This is very interesting, You are a very skilled blogger.
I’ve joined your feed and look forward to seeking more
of your fantastic post. Also, I have shared your website in my social
networks!
I’d like to find out more? I’d like to find out more details.
Hello just wanted to give you a quick heads up
and let you know a few of the pictures aren’t
loading correctly. I’m not sure why but I think
its a linking issue. I’ve tried it in two different browsers and
both show the same results.
If you are going for finest contents like I do, just visit this web site everyday for
the reason that it presents feature contents, thanks
Does your website have a contact page? I’m having trouble locating it but,
I’d like to send you an e-mail. I’ve got some ideas for your blog you might
be interested in hearing. Either way, great website and I
look forward to seeing it improve over time.
A person essentially help to make severely articles
I would state. This is the very first time I frequented your web page and to this point?
I amazed with the analysis you made to create this particular submit incredible.
Excellent process!
Hi there mates, how is all, and what you want to say about this paragraph, in my view its really amazing for me.
magnificent post, very informative. I ponder why the other experts of this sector do not realize
this. You must proceed your writing. I’m sure, you’ve a great readers’ base already!
direct payday loan lenders money lender
Excellent goods from you, man. I’ve be mindful your stuff previous to and you are simply extremely magnificent.
I actually like what you’ve got right here, certainly like what you’re stating and the way
in which through which you are saying it. You’re making it entertaining and
you still take care of to stay it wise. I cant wait to learn much more from you.
This is actually a terrific site.
hey there and thank you for your information –
I have definitely picked up something new from right here.
I did however expertise several technical issues using this web site, since
I experienced to reload the website a lot of times previous to I could
get it to load correctly. I had been wondering if your web host is OK?
Not that I’m complaining, but sluggish loading instances times will very frequently affect your
placement in google and can damage your high-quality score if advertising and marketing with Adwords.
Anyway I am adding this RSS to my e-mail and could look out for much more of your respective exciting content.
Ensure that you update this again very soon.
homework help online write my essay for me cheap
I think the admin of this web site is truly working hard in favor of his web site, as here every information is quality based stuff.
Do you have a spam issue on this blog; I also am a blogger, and I was
wondering your situation; many of us have developed some nice methods and we are looking to swap solutions with others, be sure to shoot me an e-mail if interested.
buy fluconazole female pink viagra buy xenical online
acyclovir viagra for females generic vardenafil online doxycycline 100 mg
Wow that was strange. I just wrote an incredibly long comment but after I clicked submit my comment didn’t
appear. Grrrr… well I’m not writing all that over again. Regardless, just wanted to say fantastic blog!
soft viagra buy lisinopril buy robaxin paxil 20 mg generic cialis
You could definitely see your expertise within the article you
write. The arena hopes for more passionate writers like you who are
not afraid to mention how they believe. All the time go after your heart.
online loans
cash advance loan
generic for strattera tadalafil 20mg where do you buy viagra
Hi, I do believe this is an excellent website. I stumbledupon it 😉 I am going to revisit yet again since i have book-marked it.
Money and freedom is the best way to change, may you be rich and continue to guide others.
Hi, Neat post. There is an issue together with your web site in web explorer, might check
this? IE nonetheless is the marketplace chief and a large part of other
folks will pass over your great writing due to
this problem.
Wow, awesome blog layout! How long have you been blogging for?
you make blogging look easy. The overall look of your website is great, as well as the content!
plenty of fish natalielise
payday loans no credit loans tulsa ok
I have read so many posts regarding the blogger lovers however this paragraph is in fact a good paragraph, keep it up.
tetracycline
Having read this I thought it was rather informative. I appreciate
you taking the time and energy to put this content together.
I once again find myself personally spending a lot of time both reading and posting comments.
But so what, it was still worthwhile!
Woah! I’m really digging the template/theme of this website.
It’s simple, yet effective. A lot of times it’s hard to get that
“perfect balance” between superb usability and visual appearance.
I must say you’ve done a great job with this.
In addition, the blog loads extremely fast for me on Internet explorer.
Exceptional Blog!
Hi there just wanted to give you a quick heads up.
The text in your post seem to be running off the screen in Firefox.
I’m not sure if this is a formatting issue or something to do
with internet browser compatibility but I figured I’d post to let you know.
The design and style look great though! Hope you get the problem solved soon. Thanks
If some one wishes expert view regarding running a blog after that i advise him/her to visit this
web site, Keep up the fastidious work.
buy maxalt clomid buy lopid 600 mg price
Point clearly taken.!
viagra
side effects karvea and viagra – https://www.genericonlineviagrarx.com/viagra-generic/
viagra mixers
lowest price viagra check money order PatrickKaw 241cf48
Just want to say your article is as amazing. The clarity in your publish
is just great and that i could assume you are a professional in this
subject. Well along with your permission let me to seize your RSS feed to keep up to
date with impending post. Thanks one million and please
keep up the gratifying work.
Hello there, just became aware of your blog through Google, and found
that it’s really informative. I’m gonna watch out
for brussels. I’ll be grateful if you continue
this in future. Lots of people will be benefited from your
writing. Cheers!
Hello there! I could have sworn I’ve been to this
site before but after browsing through some of the post I realized it’s new to
me. Nonetheless, I’m definitely happy I found it and I’ll be
bookmarking and checking back often!
Interesting blog! Is your theme custom made or
did you download it from somewhere? A design like
yours with a few simple tweeks would really make my blog shine.
Please let me know where you got your theme. With thanks
My brother suggested I might like this website.
He was totally right. This post actually made my day.
You cann’t imagine simply how much time I had
spent for this information! Thanks!
I am really loving the theme/design of your weblog. Do you ever run into any
web browser compatibility problems? A number of my blog visitors have
complained about my site not operating correctly in Explorer but looks great in Opera.
Do you have any recommendations to help fix
this problem?
generic levitra online http://levitrakgsy.com/ – levitra online levitra coupon generic levitra levitra generic
levitra 20 mg http://levitrafvuk.com/ – levitra generic buy levitra levitra 20 levitra 20
Thanks for the marvelous posting! I genuinely enjoyed reading
it, you could be a great author.I will remember to bookmark your blog and
will come back sometime soon. I want to encourage you to continue your great writing, have a nice day!
This website truly has all the information and
facts I needed about this subject and didn’t know who to ask.
I couldn’t resist commenting. Exceptionally well written!
This info is worth everyone’s attention. Where can I find out
more?
buy lisinopril online
This is a topic that’s close to my heart… Take care!
Exactly where are your contact details though?
online canadian pharmacy
Hello every one, here every one is sharing these experience,
so it’s good to read this weblog, and I used to visit this weblog every day.
buy viagra pills http://emilypharmfsf.com/ – how to buy viagra buy viagra online cheap viagra pills for men can you take 2 viagra pills at once
prescription viagra http://miapharmer.com/ – generic viagra without a doctor prescription buy viagra with prescription how to get viagra without a prescription generic viagra without prescription
ujc online casino games free qjh best online slots
jge 100 no deposit bonus codes
canadian pharmacies legitimate
best canadian pharmacies
eyb no deposit bonus codes for usa players
Superb forum posts. Cheers!
agen resmi cialis
cialis 20mg
aanbevolen dosis cialis
cialis generic
viagra
sildenafil http://sildenafiljcfs.com/ – teva sildenafil goodrx sildenafil side effects of sildenafil sildenafil 100mg
cov sugarhouse casino online drx big fish free slots games
qty gsn casino games
Hey there! This is kind of off topic but I need
some guidance from an established blog. Is it hard to set up your
own blog? I’m not very techincal but I can figure things out pretty fast.
I’m thinking about setting up my own but I’m not sure where to start.
Do you have any ideas or suggestions? With thanks
I don’t even know how I ended up here, however I
believed this submit was once good. I do not know who you’re however certainly you are
going to a well-known blogger if you are not already.
Cheers!
I like reading an article that can make men and women think.
Also, thank you for allowing for me to comment!
Fantastic beat ! I would like to apprentice while you amend your site, how could i subscribe
for a blog website? The account aided me a acceptable deal.
I had been tiny bit acquainted of this your broadcast offered bright clear idea
gss free casino games
fzl play online casino
gcm casino slots
college essay online help http://buyessayhelpqho.com/ – buy custom essay buy essay papers online help writing an essay english essay help online
п»їpayday loan https://paydayloandjs.com/ – applying for a payday loan payday loan online wal mart payday loan payday loan apps
Woah! I’m really enjoying the template/theme of this site.
It’s simple, yet effective. A lot of times it’s hard to get that “perfect balance”
between usability and visual appearance. I must say you’ve done a very good
job with this. Additionally, the blog loads extremely fast for me on Opera.
Exceptional Blog!
weh online casinos rnz casino slots
hrg big fish casino
zki big fish casino wjg free casino games
zig free casino
brg no deposit casino
ybm play online casino
Hi! This post could not be written any better! Reading this post
reminds me of my previous room mate! He always kept chatting about this.
I will forward this article to him. Pretty sure he will
have a good read. Thanks for sharing!
pqp cashman casino slots
luv vegas world casino games free
hydroxyzine pamoate 50 mg http://hydroxyzineataraxth.com/ – hydroxyzine pamoate 50mg hydroxyzine and alcohol hydroxyzine side effects side effects of atarax
xtm zone online casino
iax big slots games for free
Pretty! This was a really wonderful post. Thanks for providing this info.
zco online casino
hqt casino games
payday loans direct lenders no brokers
best payday loans
money in minutes
cash advance credit card
current lending rates
zsd casino bonus codes
Magnificent goods from you, man. I have understand your stuff
previous to and you’re just extremely fantastic. I actually
like what you’ve acquired here, really like what you’re saying and the way in which you say it.
You make it entertaining and you still care for to keep it wise.
I can’t wait to read much more from you. This is
actually a great website.
Attractive component of content. I simply stumbled upon your website and in accession capital to say that I acquire actually loved account
your blog posts. Any way I will be subscribing for
your feeds or even I fulfillment you get entry to consistently quickly.
Great blog! Do you have any recommendations for aspiring writers?
I’m hoping to start my own blog soon but I’m a little lost
on everything. Would you propose starting with a free platform like
Wordpress or go for a paid option? There are so many choices out there that I’m completely overwhelmed
.. Any suggestions? Thank you!
tpt zone online casino bingo games
Does your blog have a contact page? I’m having problems locating it
but, I’d like to shoot you an e-mail. I’ve got some creative ideas for
your blog you might be interested in hearing.
Either way, great site and I look forward to seeing it develop over time.
Great website! It looks extremely professional!
Keep up the good job! Generic viiagra online buy Viagra online buy female viagra http://www.viaonlinebuy.us/ viagra 50mg
tablet [url=http://www.viaonlinebuy.us/]Viagra online[/url] watermelon for ed
Your tips is quite intriguing. Generic viagra online fast shipping viagra pill image viagra dosage recommendations reviews 2018
http://Myonlinebuy.us/ levitra prices walgreens [url=https://www.buygenericviagra69.com/]where
can i buy viagra online with paypal free[/url] best generic
cialis prices from canada
My developer is trying to persuade me to move to .net from PHP.
I have always disliked the idea because of the
costs. But he’s tryiong none the less. I’ve been using
Movable-type on a variety of websites for about a year and am anxious about switching to another platform.
I have heard fantastic things about blogengine.net. Is
there a way I can import all my wordpress posts into it?
Any kind of help would be really appreciated!
yzk casino game
retin a
wjz real casino slot machine games
canadian pharmacy
Maintain the amazing work !! Lovin’ it! Buy brand viagra 100mg
online viagra online cheap canadian viagra for women does it work wthout http://myonlinebuy.us/ viagra generic red pills for sale [url=http://Myonlinebuy.us/]best place to buy
viagra online with prescription drug[/url] viagra 100mg not
working together download
buy viagra online usa http://emtpartsstore.com/ – buy viagra online buying viagra online buy viagra online viagra online prescription
viagra alternative http://genericonlineviaqra.com/ – viagra vs cialis buy viagra online viagra for sale cost of viagra
canadian online pharmacies
rx online no prior prescription
What’s up to every one, it’s in fact a nice for me to visit this website, it consists of
useful Information.
buspar australia buy viagra in usa online prednisone 5mg over the counter motilium usa buy tretinoin
sildenafil 50 mg price motilium tablets atenolol tablets 25mg online prednisone 10mg no prescription tadalafil 10 mg
It’s a pity you don’t have a donate button! I’d definitely donate
to this excellent blog! I guess for now i’ll settle for book-marking and adding your RSS feed to my Google account.
I look forward to fresh updates and will share this blog with my Facebook group.
Chat soon!
buy online doxycycline without prescription
Heya just wanted to give you a quick heads up and let you
know a few of the images aren’t loading properly.
I’m not sure why but I think its a linking issue. I’ve tried it in two different internet browsers and both show the same outcome.
sildenafil 40 mg colchicine 0.6 mg tablet buy allopurinol 300 mg uk metformin 500 mg cost doxycycline tablets
Hi to all, the contents present at this website are truly remarkable
for people knowledge, well, keep up the good work fellows.
I like what you guys tend to be up too. This sort of clever work
and reporting! Keep up the wonderful works guys I’ve
added you guys to my blogroll.
What’s up to all, how is the whole thing, I think
every one is getting more from this web site,
and your views are fastidious designed for new viewers.
Nice post. I learn something new and challenging on sites I stumbleupon on a daily basis.
It’s always useful to read through articles from other
authors and practice a little something from other web sites.
Asking questions are actually pleasant thing if you are not understanding anything
completely, except this paragraph presents good understanding yet.
Thanks for finally writing about >增加PHP的Session存储和处理能力 | 李俊麟的平凡生活 <Liked it!
viagra reviews http://1viagraocns.com/ – where to buy viagra price of viagra real viagra for sale online viagra
Inspiring story there. What occurred after?
Take care!
Hi there! Someone in my Facebook group shared this site with us
so I came to take a look. I’m definitely loving the
information. I’m book-marking and will be tweeting this to my followers!
Wonderful blog and outstanding design.